mysql安装完成后配置自动启动服务的方法

systemd环境下启用mysqld自动启动需先确认服务存在,再执行sudo systemctl enable mysqld启用开机自启,并用sudo systemctl start mysqld立即启动;若服务未注册,需手动创建systemd unit文件或配置init脚本。

mysql安装完成后配置自动启动服务的方法

systemd 环境下启用 mysqld 自动启动(推荐)

现代 Linux 发行版(如 CentOS 7+/Ubuntu 16.04+)默认使用 systemd,MySQL 安装后通常已注册为 mysqld 服务单元,但默认未必启用。执行以下命令确认并启用:

  • 检查服务状态:sudo systemctl status mysqld(或 mysql,取决于安装方式;常见为 mysqld
  • 若提示 Unit mysqld.service not found,说明服务文件缺失,需先初始化或重装 MySQL(见下节)
  • 启用开机自启:sudo systemctl enable mysqld
  • 立即启动(非必须,但建议验证):sudo systemctl start mysqld

注意:enable 不等于启动,它只是在 /etc/systemd/system/multi-user.target.wants/ 下创建软链接。重启后才会真正生效。

service 命令失效?检查是否真为 SysVinit 环境

如果 sudo service mysqld start 报错或提示 unrecognized service,大概率系统已切换至 systemd,此时 service 是兼容层,实际仍调用 systemctl。不要强行写 /etc/init.d/mysqld 脚本——除非你用的是 CentOS 6 或 Debian 7 这类老系统。

  • 验证 init 系统:ps -p 1 -o comm= —— 输出 systemd 表示用 systemd;输出 init 可能是 SysVinit
  • SysVinit 环境下才需:sudo chkconfig mysqld on(CentOS 6)或 sudo update-rc.d mysql defaults(Debian/Ubuntu 14.04)
  • 混淆点:MySQL 官方二进制包自带 support-files/mysql.server,可手动拷贝为 /etc/init.d/mysqld,但不推荐——易与包管理器冲突

MySQL 未注册服务?可能是二进制包或源码安装

直接解压官方 mysql-8.0.x-linux-x86_64.tar.xz 安装时,mysqld 不会自动注册为系统服务。必须手动配置:

PHP简约自动发卡平台个人版

PHP简约自动发卡平台个人版

PHP自动发卡平台个人版是采用php+mysql进行开发的自动发卡支付平台。服务器环境:PHP5.2以上版本mysql5.1 或以上版本安装说明:安装 http://你的域名/install.php 进行安装,后台路径http://你的域名/admin 后台账号:admin 后台密码:yc88.net需要修改用户名,可以进入数据库进行修改faka_users把admin改成其他支持改成中文

下载

  • 确保已初始化数据目录:./bin/mysqld --initialize --user=mysql --datadir=/path/to/data
  • 复制服务模板:cp support-files/mysql.server /etc/init.d/mysqld
  • 编辑 /etc/init.d/mysqld,修正以下关键变量:
    basedir=/path/to/mysql
    datadir=/path/to/mysql/data
    
  • 添加到系统服务:sudo chmod +x /etc/init.d/mysqld && sudo chkconfig --add mysqld(CentOS)或 sudo update-rc.d mysqld defaults(Debian)

更稳妥的做法是为二进制版手写 systemd unit 文件(/etc/systemd/system/mysqld.service),避免依赖过时的 mysql.server 脚本。

启用后仍不自启?排查 SELinux 和权限

即使 systemctl enable 成功,重启后服务未运行,常见原因不是配置问题,而是启动失败被静默忽略:

  • 查看真实启动日志:sudo journalctl -u mysqld -n 50 --no-pager,重点关注 Can't open error logPermission deniedAddress already in use
  • SELinux 阻止(RHEL/CentOS):sudo setsebool -P mysqld_disable_trans 1 或临时设为 permissive 模式验证
  • 数据目录权限错误:确保 datadir 所有者为 mysql:mysql,且 mysqld 用户有读写权
  • 端口被占:sudo ss -tlnp | grep :3306,确认无其他进程监听 3306

自动启动的“成功”只代表 systemd 尝试启动了,不代表 MySQL 实际进入了运行状态。每次修改配置后,务必用 sudo systemctl daemon-reload 刷新 unit 文件,并用 journalctl 看启动瞬间的日志——这是最常被跳过的验证步骤。

https://www.php.cn/faq/1982098.html

发表回复

Your email address will not be published. Required fields are marked *