- 关闭数据库
service mysqld stop
- 跳过验证开启数据库
service mysqld start --skip-grant-tables --skip-networking
# --skip-grant-tables: 跳过连接池的授权表验证。
# --skip-networking: 跳过连接池的TCP/IP连接MySQL功能,也就是只能本地通过socket套接字来连接MySQL数据库,否则其它用户可以远程访问服务器并基于其它你们用户来直接登录数据库(因为缺少验证功能)。
# MySQL 8.0+可以不使用"--skip-networking"参数,但是MySQL 5.7及其以下版本请务必添加该属性,避免监听相应的端口;
# 如果使用mysqld_safe脚本无法启动时,可以手动指定"--datadir"和"--basedir"参数来启动,也可以编辑"~/.my.cnf"文件将"--datadir"和"--basedir"参数写入即可;
- 修改密码
# 手动加载磁盘的授权表到内存中,目的是启用(加载)刚刚启动MySQL实例时跳过的两个功能(--skip-grant-tables,--skip-networking),以便于接下来修改数据库密码:
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
# 修改数据库管理员密码
# 对于"MySQL 5.6"修改密码方式如下:
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('1qaz@WSX');
# 对于"MySQL 5.7+"修改密码方式如下:
ALTER USER 'root'@'localhost' IDENTIFIED BY '1qaz@WSX';
- 重启数据库到正常模式
service mysqld restart