繁体   English   中英

尝试修复root mysql用户权限

[英]Trying to repair root mysql user permissions

第一步是关闭MySQL,然后在禁用show Grants的情况下重新连接:

/Applications/MAMP/Library/bin/mysqld --skip-grant-tables
--skip-networking --port=3306 --socket=/Applications/MAMP/tmp/mysql/mysql.sock &

从那里,我没有用户/密码就连接到MySQL,然后去修复了授予权限:

UPDATE mysql.user SET Grant_priv='Y', Super_priv='Y' WHERE User='root';

所以现在我的mysql.user行看起来像:

+-----------+-------+-------------------------------------------+-------------+-------------+-------------+-------------+-------------+-----------+-------------+---------------+--------------+-----------+------------+-----------------+------------+------------+--------------+------------+-----------------------+------------------+--------------+-----------------+------------------+------------------+----------------+---------------------+--------------------+------------------+------------+--------------+------------------------+----------+------------+-------------+--------------+---------------+-------------+-----------------+----------------------+--------+-----------------------+
| Host      | User  | Password                                  | Select_priv | Insert_priv | Update_priv | Delete_priv | Create_priv | Drop_priv | Reload_priv | Shutdown_priv | Process_priv | File_priv | Grant_priv | References_priv | Index_priv | Alter_priv | Show_db_priv | Super_priv | Create_tmp_table_priv | Lock_tables_priv | Execute_priv | Repl_slave_priv | Repl_client_priv | Create_view_priv | Show_view_priv | Create_routine_priv | Alter_routine_priv | Create_user_priv | Event_priv | Trigger_priv | Create_tablespace_priv | ssl_type | ssl_cipher | x509_issuer | x509_subject | max_questions | max_updates | max_connections | max_user_connections | plugin | authentication_string |
+-----------+-------+-------------------------------------------+-------------+-------------+-------------+-------------+-------------+-----------+-------------+---------------+--------------+-----------+------------+-----------------+------------+------------+--------------+------------+-----------------------+------------------+--------------+-----------------+------------------+------------------+----------------+---------------------+--------------------+------------------+------------+--------------+------------------------+----------+------------+-------------+--------------+---------------+-------------+-----------------+----------------------+--------+-----------------------+
| localhost | root  | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B | 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并重新启动,而没有授予表选项等:

/Applications/MAMP/Library/bin/mysqld --port=3306 --socket=/Applications/MAMP/tmp/mysql/mysql.sock &

然后,我用root用户和密码重新连接,并再次授予自己对所有本地数据库的权限:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost'

仍然没有运气。

mysql> SELECT * FROM exp_throttle LIMIT 1;
ERROR 1142 (42000): SELECT command denied to user 'root'@'localhost' for table 'exp_throttle'

我是否缺少明显的东西?

更新查询后,您需要刷新权限

FLUSH PRIVILEGES;

要了解您的权限,您可以运行

SELECT user()
SELECT current_user()

在两种情况下都应该有root @ localhost。 然后看看您目前的补助金

SHOW GRANTS;

如果在安全模式下恢复特权没有帮助,请尝试添加另一个具有完全权限的用户,然后使用新用户连接到数据库。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM