我正在安装一个 MySQL 安装,它已经创建了一个用户(“admin”),但该用户没有密码,也没有任何权限,所以我无法创建新用户,甚至无法重置该用户的密码。
我正在使用 Ubuntu Server,在查看帮助文件后,当唯一的现有用户没有权限时,我仍然找不到添加用户的方法。我错过了一些基本的东西吗?有没有办法在进入 MySQL 命令行之前从命令行添加超级用户?
Rol*_*DBA 10
在使用 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';
Run Code Online (Sandbox Code Playgroud)
然后重启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
;
Run Code Online (Sandbox Code Playgroud)
确保将每一列设置为“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
Run Code Online (Sandbox Code Playgroud)
这将禁用 TCP/IP,并且没有人可以潜入数据库。完成后,只需执行以下操作:
service mysql restart
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
12543 次 |
最近记录: |