上一篇
linux mysql服务器启动
- 云服务器
- 2025-08-16
- 7
Linux下执行 systemctl start mysqld或`service mysql start
前提条件准备
确保已安装MySQL服务器
若未安装需先执行以下命令(以CentOS为例):

初始化MySQL数据目录(仅首次启动前需要)
关键操作:新建空数据目录并赋予权限
️ 注意:此操作会删除现有数据,生产环境慎用!
sudo mysqld --initialize --user=mysql --basedir=/usr --datadir=/var/lib/mysql
随后创建符号链接并设置所有权:

核心启动方式对照表
| 场景 | 命令 | 说明 |
|---|---|---|
| 立即启动服务 | sudo systemctl start mysqld | 标准Systemd方式 |
| 开机自启 | sudo systemctl enable mysqld | 加入开机启动项 |
| 停止服务 | sudo systemctl stop mysqld | |
| 重启服务 | sudo systemctl restart mysqld | |
| 查看运行状态 | sudo systemctl status mysqld | 显示活跃进程及日志路径 |
| 传统init脚本 | sudo service mysqld start | 兼容老旧系统 |
启动后必做校验
确认服务进程存在
ps aux | grep mysqld # 应看到类似输出: # mysql XXXXX ... /usr/sbin/mysqld --daemonize --pid-file=...
测试本地连接
mysql -u root -p # 输入初始临时密码(见error log) # 成功提示符:Welcome to the MySQL monitor...
查看错误日志位置
grep 'temporary password' /var/log/mysqld.log # 示例输出:[Note] A temporary password is generated for root@localhost: Abcdefgh123!
高级配置要点
| 配置项 | 操作命令 | 效果说明 |
|---|---|---|
| 开放远程访问 | ALTER USER 'root'@'%' IDENTIFIED BY 'NewPass!'; | 允许任意IP登录 |
| 修改默认字符集 | [mysqld] default-character-set=utf8mb4 | 写入/etc/my.cnf后重启生效 |
| 调整最大连接数 | [mysqld] max_connections=500 | 提升并发能力 |
| 绑定特定网卡 | [mysqld] bind-address=192.168.1.100 | 增强安全性 |
常见问题排查
Q1: 报错 “Can’t connect to local MySQL server through socket”
原因:Socket文件缺失或权限不足
解决方案:

- 检查Socket文件是否存在:ls -l /var/run/mysqld/mysqld.sock
- 重建Socket链接:sudo ln -sf /var/lib/mysql/mysql.sock /tmp/mysql.sock
- 确认AppArmor/Selinux未拦截:sudo setenforce 0(临时禁用)
Q2: 远程连接被拒绝
原因:防火墙阻断或未授权用户
解决方案:
- 开放3306端口:sudo firewall-cmd --permanent --add-port=3306/tcp
- 刷新防火墙规则:sudo firewall-cmd --reload
- 授予远程权限:GRANT ALL PRIVILEGES ON . TO 'root'@'%' IDENTIFIED BY 'YourPassword' WITH GRANT OPTION; FLUSH PRIVILEGES;
相关问题与解答
Q: 如何修改MySQL根用户密码?
A:
- 登录MySQL控制台:mysql -u root -p
- 执行改密命令:ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewSecurePassword!';
- 刷新权限:FLUSH PRIVILEGES;
Q: 启动时报”Tablespace does not exist”错误如何处理?
A:
该错误表明数据目录损坏,需按以下步骤修复:
- 停止MySQL服务:sudo systemctl stop mysqld
- 备份现有数据:sudo mv /var/lib/mysql{,.bak}
- 重新初始化:sudo mysqld --initialize --user=mysql --basedir=/usr --datadir=/var/lib/mysql
- 恢复备份数据到新目录
- 启动服务:`sudo systemctl start