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;