我正在安装 MySQL,其中已经创建了一个用户(“admin”),但是该用户没有密码,也没有任何权限,因此我无法创建新用户,甚至无法重置该用户的密码。
我正在使用 Ubuntu Server,在查看帮助文件后,我仍然找不到在唯一现有用户没有权限的情况下添加用户的方法。我是否遗漏了一些基本知识?有没有办法在进入 MySQL 命令行之前从命令行添加超级用户?
答案1
作为没有管理员权限的用户,您无法添加其他用户。这将破坏身份验证/授权的整个目的。
您可以按照此处概述的步骤重置 root 密码关联。
答案2
在使用 skip-grant-tables 时,MySQL 有一些有趣的事情需要注意。
一旦使用 skip-grant-tables 重新启动 mysqld,就不能使用 GRANT 和 REVOKE 命令。
选项 1)更新 root@localhost 的密码;
你可以这样做:
UPDATE mysql.user SET password=PASSWORD('whateverpasswordyouwant') WHERE user='root' and host='localhost';
然后重新启动 mysqld。
选项 2) 您可以直接在 mysql.user 中插入一条记录。如果您想为自己建立一个名为超级用户的新用户,则必须执行以下操作(这适用于 MySQL 5.5):
INSERT INTO mysql.user SET
Host = 'localhost',
User = 'superuser',
Password = PASSWORD('whateverpasswordyouwant'),
Select_priv = 'Y',
Insert_priv = 'Y',
Update_priv = 'Y',
Delete_priv = 'Y',
Create_priv = 'Y',
Drop_priv = 'Y',
Reload_priv = 'Y',
Shutdown_priv = 'Y',
Process_priv = 'Y',
File_priv = 'Y',
Grant_priv = 'Y',
References_priv = 'Y',
Index_priv = 'Y',
Alter_priv = 'Y',
Show_db_priv = 'Y',
Super_priv = 'Y',
Create_tmp_table_priv = 'Y',
Lock_tables_priv = 'Y',
Execute_priv = 'Y',
Repl_slave_priv = 'Y',
Repl_client_priv = 'Y',
Create_view_priv = 'Y',
Show_view_priv = 'Y',
Create_routine_priv = 'Y',
Alter_routine_priv = 'Y',
Create_user_priv = 'Y',
Event_priv = 'Y',
Trigger_priv = 'Y',
Create_tablespace_priv = 'Y',
ssl_type = '',
ssl_cipher = '',
x509_issuer = '',
x509_subject = '',
max_questions = 0,
max_updates = 0,
max_connections = 1000000,
max_user_connections = 1000000
;
确保将每一列设置为“Y”,因为 MySQL 4.x、5.0、5.1、5.5 在 mysql.user 中具有不同的权限。
关于使用 skip-grant-tables 的另一个警告:当您用此启动 mysqld 时,每个人及其祖母都可以无需身份验证登录。您应该像这样启动 mysql:
service mysql restart --skip-grant-tables --skip-networking
这将禁用 TCP/IP,这样就没有人可以潜入数据库了。完成后,只需执行以下操作:
service mysql restart
答案3
禁用对 MySQL 端口的所有访问,然后手动启动 MySQL 守护程序--skip-grant-tables
以禁用服务器上的所有身份验证。