MYSQL8.0以上版本正确修改ROOT密码

博客讲述了在Redhat Cent7上安装MySQL 8.0.2.0后遇到的登录及权限问题。由于8.0版本的密码策略,导致无法创建用户。作者尝试了多种方法,包括使用skip-grant-tables跳过权限检查登录并修改密码,但都因密码复杂度要求失败。最终,通过使用mysql_native_password函数解决了密码策略问题,并成功创建用户。同时,还介绍了如何通过SQL工具(如SQLyog)进行远程连接,涉及了ALTERUSER命令和GRANT权限设置。

部署环境:

安装版本red hat Cent 7.0

MYSQL 版本 8.0.2.0

成功部署完毕后出现故障情况:

1.正常启动MYSQL服务后,敲Linux中root账户和密码进入不去。

2.从/etc/my.cnf 配置文件中加入skip-grant-tables后正常登陆,但是不能创建用户等多操作

总结来说:

想进去mysql后不能操作多指令,操作多指令又不能进去mysql,死循环

挖坑环节:

网上找了很多办法,首先加入skip-grant-table.后进去刷新权限表,重启服务,不用密码的root进去,在改root密码后,重新刷新权限表。方法试了很多个都不对。修改root环节始终不对。

文章https://www.cnblogs.com/jjg0519/p/9034713.html

给了我提醒,是不是mysql8.0以上的版本密码策略和更改语法不对了。

重新操作一遍:

#vim /etc/my.cnf

【mysql】

添加skip-grant-table

#systemctl stop mysqld.service

#systemctl start mysqld.service

#mysql –u root

[敲回车进入]

mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)

mysql> alter user ‘root’@'localhost’IDENTIFIED BY ‘MyNewPass’;

ERROR 1819 (HY000): Your password does notsatisfy the current policy requirements

mysql> alter user ‘root’@'localhost’IDENTIFIED BY ‘MyNewPass@123’;

ERROR 1396 (HY000): Operation ALTER USERfailed for ‘root’@‘localhost’

mysql> alter user’root’@’%’ IDENTIFIED BY ‘MyNewPass@123’;

【mysql8.0以上密码策略限制必须要大小写加数字特殊符号,我之前用mysqladmin,set,update,参考修改root密码的前人:http://www.cnblogs.com/liufei88866/p/5619215.html】

Query OK, 0 rows affected (0.05 sec)

退出,把Skip-grant-table语句删除,重新启动数据库

[root@localhost ~]# vim /etc/my.cnf【删除省略】

[root@localhost ~]# systemctl stopmysqld.service

[root@localhost ~]# systemctl startmysqld.service

[root@localhost ~]# mysql -uroot –p

mysql> CREATE USER dbadmin@localhost

-> IDENTIFIED BY ‘pwd123’;

ERROR 1819 (HY000): Your password does notsatisfy the current policy requirements

mysql> CREATE USER dbadmin@localhost

-> IDENTIFIED BY ‘Pwd123’;

ERROR 1819 (HY000): Your password does notsatisfy the current policy requirements

mysql> CREATE USER dbadmin@localhost

-> IDENTIFIED BY ‘Pwd@123’;

ERROR 1819 (HY000): Your password does notsatisfy the current policy requirements

mysql> CREATE USER dbadmin@localhost

-> IDENTIFIED BY ‘MyNewPass@123’;

Query OK, 0 rows affected (0.10 sec)

【可以正常创建用户,密码安全性还是要求着设置复杂度要高一些】

第二使用SQL工具进行远程连接,这里使用SQLyog进行远程连接。

一般来说,直接用ROOT用户的账号密码去连接是不行,即时密码正确。

MYSQL 8.0内新增加mysql_native_password函数,通过更改这个函数密码来进行远程连接。

2.1 第一可以更改ROOT用户的native_password密码

mysql>ALTER USER ‘root’@’%’ IDENTIFIED WITH mysql_native_password BY’MyPass@123’;

Query OK, 0 rows affected (0.15 sec)

2.2 第二可以用Root用户登录新增加用户,进行授权再远程连接。

mysql> CREATE USER ‘super’@’%'IDENTIFIED BY ‘MyPass@123’;

Query OK, 0 rows affected (0.10 sec)

Query OK, 0 rows affe mysql> GRANT ALLON *.* TO ‘super’@’%’ WITH GRANT OPTION;

Query OK, 0 rows affected (0.10 sec)

mysql> Flush privileges;

Query OK, 0 rows affected (0.00 sec)cted(0.01 sec)

mysql> ALTER USER ‘super’@’%’ IDENTIFIEDWITH mysql_native_password BY ‘MyPass@123’;

Query OK, 0 rows affected (0.10 sec)

注意:更改了mysql_native_passwd密码,等同更改用户原始密码。MYSQL 8.0 内以mysql-native_passwd为主,从Shell界面登录需要注意了。

感谢网友帮助,希望能帮到IT事业上面挖坑的人。

### Linux 下 MySQL 8.0 忘记 root 密码的重置方法 在 Linux 系统下重置 MySQL 8.0root 密码,可以按照以下步骤完成。以下是详细的操作流程: #### 1. 修改 MySQL 配置以允许免密码登录 编辑 MySQL 的配置文件,添加 `skip-grant-tables` 参数以跳过权限验证。此操作允许用户无需密码即可进入 MySQL。 ```bash sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf ``` 在 `[mysqld]` 段落中添加以下内容: ```plaintext skip-grant-tables ``` 保存并退出编辑器。 #### 2. 重启 MySQL 服务 修改配置后,需要重启 MySQL 服务以使更改生效。 ```bash sudo service mysql restart ``` #### 3.密码登录 MySQL 并重置密码 通过终端直接登录 MySQL 数据库(由于启用了 `skip-grant-tables`,此时无需输入密码)。 ```bash mysql ``` 进入 MySQL 后,执行以下命令以切换到 `mysql` 数据库: ```sql use mysql; ``` 将 root 用户的密码设置为空(如果需要清空旧密码): ```sql update mysql.user set authentication_string='' where user='root'; flush privileges; // 刷新权限表[^1] ``` 然后为 root 用户设置新密码。根据 MySQL 8.0 的特性,推荐使用 `ALTER USER` 命令设置密码,并指定身份验证插件为 `mysql_native_password`: ```sql ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'new_password'; // 替换 new_password 为实际密码[^4] flush privileges; // 刷新权限表[^2] ``` #### 4. 还原配置并重启服务 完成密码修改后,需要移除 `skip-grant-tables` 参数并重启 MySQL 服务以恢复正常模式。 ```bash sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf ``` 删除之前添加的 `skip-grant-tables` 行,保存并退出编辑器。随后重启 MySQL 服务: ```bash sudo service mysql restart ``` #### 5. 测试新密码 尝试使用新密码登录 MySQL 以确认修改成功: ```bash mysql -u root -p ``` 输入新设置的密码进行验证。 --- ### 注意事项 - 如果上述方法无法正常工作,可能是由于主机名绑定问题导致。可以尝试将 `'root'@'localhost'` 替换为 `'root'@'%'`[^3]。 -密码过于简单,可能会触发 MySQL密码策略限制,导致报错。可以通过调整 MySQL密码强度策略来解决: ```sql SET GLOBAL validate_password.policy=LOW; // 设置较低的密码强度要求[^5] ``` --- ### 示例代码 以下是一个完整的脚本示例: ```bash # 修改配置文件 sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf # 添加 skip-grant-tables # 重启服务 sudo service mysql restart # 登录 MySQL mysql # 执行 SQL 命令 use mysql; update mysql.user set authentication_string='' where user='root'; flush privileges; ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'new_password'; flush privileges; # 退出 MySQL exit; # 还原配置 sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf # 删除 skip-grant-tables # 重启服务 sudo service mysql restart ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值