【问题标题】:Trying to repair root mysql user permissions尝试修复root mysql用户权限
【发布时间】:2016-03-10 19:08:33
【问题描述】:

第一步是关闭 MySQL,然后在禁用显示授权的情况下重新连接:

/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'

我是否遗漏了一些明显的东西?

【问题讨论】:

  • 谢谢瑞恩,我已经阅读并尝试过了。此时我什至无法卸载/重新安装 mysql,因为我无法取出我的数据库。
  • 我放弃并从我的系统中完全卸载/重新安装了 MAMP Pro,即使在此之后,root 用户仍然无法执行任何操作(即创建新数据库)。

标签: mysql mysql-error-1064


【解决方案1】:

更新查询后你需要刷新权限

FLUSH PRIVILEGES;

为了阐明您可以运行的权限

SELECT user()
SELECT current_user()

在这两种情况下都应该有 root@localhost。然后看看你目前的赠款

SHOW GRANTS;

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

【讨论】:

  • 我在更改权限之前和之后都尝试过。没有运气。
  • 那么你需要查看你当前的授权 显示授权 然后在安全模式下运行并在 上授予所有权限。 TO 'root'@'localhost' with grant option跨度>
  • 这些是我的赠款:|将 . 上的所有权限授予由密码“81F5E21E35407D884A6CD4A731AEBFB6AF209E1B”标识的“root”@“localhost”,带有授予选项 | |授予monkey101_db 上的所有权限。 TO 'root'@'localhost' |将roll_db.* 上的所有权限授予 'root'@'localhost' | GRANT PROXY ON ''@'' TO 'root'@'localhost' WITH GRANT OPTION
  • "ON . TO" 是 MySQL 5.5.X 中的语法错误(我正在运行)。所以我用“ON . TO”代替了,假设是一样的。仍然没有运气。谢谢。
  • 这是当前编辑器中的一个错误,它省略了星号。查看有关正确语法的文档。星号点星号
猜你喜欢
  • 2010-12-12
  • 2020-10-08
  • 2023-03-25
  • 2017-02-17
  • 1970-01-01
  • 2018-06-12
  • 2010-12-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多