Database

MySQL 5或8 修改root密码及远程登录

1. 初始安装未设置密码,修改密码

  • 首先切到系统root或mysql用户下,使用mysql客户端命令进入
mysql -uroot
  • 修改允许远程访问:
use mysql;
update user set host='%';
  • 修改root密码【重点】(与mysql8以下不同)
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';
  • 刷新权限信息
flush privileges;

2. 已知 root 密码,修改密码

  • 重置或修改root密码(注:其中-p参数指定旧密码,新版mysql可能不允许在命令明文指定,此时-p无需指定值,--socket参数可选):
mysqladmin -u root -p password --socket=/mnt/disk1/mysql/mysqld.sock

该命令之后会提示输入原密码,输入正确后即可修改。

  • UPDATE user 语句这种方式必须是先用root帐户登入mysql,然后执行:
UPDATE user SET password=PASSWORD('123456') WHERE user='root';

# 高版本可能会报错提示无 password 字段,则改为:
#UPDATE user SET authentication_string=PASSWORD('123456') WHERE user='root';

flush privileges;
  • SET PASSWORD 语句这种方式也需要先用root命令登入mysql,然后执行
SET PASSWORD FOR root=PASSWORD('123456');

参考文献

3. 忘记 root 密码,修改密码

  • 修改 my.cnf,在 [mysqld] 选项下增加 skip-grant-tables 来跳过权限认证
  • 重启 mysqld
USE mysql;
UPDATE user SET authentication_string = password ('123456') WHERE User = 'root';
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';
flush privileges;

4. 配置远程登录

update mysql.user set host='%' where host='localhost' and user='root';
 # 检查一下
select host,user from mysql.user where user='root';
# 刷新清缓存
flush privileges;

留言

您的电子邮箱地址不会被公开。