我使用--skip-grant-tables选项登录MySQL.但我不知道如何将所有权限返回给root用户.
错误
SQL查询:
授予所有特权*.*''root'@'localhost';
MySQL说:文档
1290 - MySQL服务器正在运行--skip-grant-tables选项
它无法执行此声明
错误
SQL查询:编辑
授予所有特权*.*TO'root' @'localhost'with MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;
MySQL说:文档
1290 - MySQL服务器正在运行--skip-grant-tables选项
它无法执行此声明
Joh*_*ohn 15
对于 mysql 8.0.12+
我试过文档(不工作)我试过各种其他选项,都失败了。
PASSWORD()已弃用,SET PASSWORD已禁用,ALTER USER也已禁用。
/usr/local/mysql/bin/mysqld_safe --skip-grant-tablesupdate user set authentication_string='' where User='root';killall mysqld现在您可以使用set password或alter user无需密码登录后
如果您无法以root身份访问mysql服务器,则应删除或无法恢复mysql.user表中的所有根记录,删除所有根记录并添加新记录.
您应该使用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 &
Run Code Online (Sandbox Code Playgroud)
哈希你的明文密码.
mysql> select PASSWORD('CLEARTEXT_PASSWORD');
+-------------------------------------------+
| PASSWORD('CLEARTEXT_PASSWORD') |
+-------------------------------------------+
| *1EADAEB11872E413816FE51216C9134766DF39F9 |
+-------------------------------------------+
1 row in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)
使用mysql数据库应用更改.
mysql> use mysql;
Run Code Online (Sandbox Code Playgroud)
删除所有根记录
mysql> delete from user where User='root';
Run Code Online (Sandbox Code Playgroud)
添加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,'','');
Run Code Online (Sandbox Code Playgroud)
刷新变化.
mysql> FLUSH PRIVILEGES;
Run Code Online (Sandbox Code Playgroud)
退出mysql命令行.
mysql> exit;
Run Code Online (Sandbox Code Playgroud)
重启mysqld服务.
[root@mysql ~]# /etc/init.d/mysqld restart
Run Code Online (Sandbox Code Playgroud)
如果你运行这个mysql命令/查询,你将获得对mysql服务器的新访问权限.
首先,停止 MySQL 服务器,然后使用--skip-grant-tables选项启动它。
[root@backups1 mysql5.7]# /etc/init.d/mysqld stop
[root@backups1 mysql5.7]# /usr/local/mysql/bin/mysqld_safe --skip-grant-tables --user=mysql
Run Code Online (Sandbox Code Playgroud)
然后,无需密码即可连接到您的实例:
[root@backups1 mysql5.7]# mysql -u root
Run Code Online (Sandbox Code Playgroud)
然后,重置 root 用户的密码。
mysql> flush privileges;
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '';
mysql> flush privileges;
Run Code Online (Sandbox Code Playgroud)
切换到 MySQL 的正常模式,然后无需密码即可连接。
当你运行mysql时,使用--skip-grant-tablesmysql不会检查任何权限。所以基本上你可以做任何事情。
要恢复 root 权限,您需要mysql像这样在数据库中运行查询
select * from user where user = 'root'
Run Code Online (Sandbox Code Playgroud)
只是为了检查 root 用户是否仍然存在:
UPDATE user SET Grant_priv = 1, Super_priv = 1 WHERE user = 'root'
Run Code Online (Sandbox Code Playgroud)
在您可以重新启动 mysql 之后,--skip-grant-tablesroot 用户应该能够执行一些授予操作,这样您的查询就可以工作
Ale*_*lli -10
要运行GRANT查询,您只需不运行 mysql skip-grant-tables- 这有什么复杂的......?
| 归档时间: |
|
| 查看次数: |
48499 次 |
| 最近记录: |