[英]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.