如果您无法以 root 身份访问 mysql 服务器,则应删除或无法恢复 mysql.user 表中的所有 root 记录,删除所有记录并添加新记录。
您应该使用 mysql PASSWORD() 函数来散列您的明文密码。检查更多信息http://dev.mysql.com/doc/refman/5.1/en/password-hashing.html
首先停止 mysql 服务器并使用 --skip-grant-tables 启动 mysqld。
[root@mysql ~]# service mysqld stop; mysqld_safe --skip-grant-tables &
散列您的明文密码。
mysql> select PASSWORD('CLEARTEXT_PASSWORD');
+-------------------------------------------+
| PASSWORD('CLEARTEXT_PASSWORD') |
+-------------------------------------------+
| *1EADAEB11872E413816FE51216C9134766DF39F9 |
+-------------------------------------------+
1 row in set (0.00 sec)
使用 mysql 数据库应用更改。
mysql> use mysql;
删除所有根记录
mysql> delete from user where User='root';
添加 root 用户可以使用您的 IP 地址的所有权限访问的新记录。
mysql> insert into `user` VALUES('YOUR_IP_ADDRESS','root','*1EADAEB11872E413816FE51216C9134766DF39F9','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','',0,0,0,0,'','');
冲洗变化。
mysql> FLUSH PRIVILEGES;
从 mysql 命令行退出。
mysql> exit;
重启mysqld服务。
[root@mysql ~]# /etc/init.d/mysqld restart
如果您运行此 mysql 命令/查询,您将获得对 mysql 服务器的新访问权限。