当没有MySQL用户拥有pipe理权限时添加一个MySQL用户?

我正在创build一个用户已经创build(“pipe理员”)的MySQL安装,但该用户没有密码,并没有任何权限,所以我不能创build新的用户,甚至重置该用户的密码。

我正在使用Ubuntu服务器,并查看帮助文件后,我仍然无法find一种方法来添加一个用户,当唯一的现有用户没有权限。 我缺less一些基本的东西吗? 在进入MySQL命令行之前,有没有办法从命令行添加超级用户?

作为没有pipe理员权限的用户,您无法添加其他用户。 这将破坏authentication/授权的整个目的。

您可以按照此链接中列出的步骤重置根密码。

禁用对MySQL端口的所有访问,然后手动启动MySQL守护进程传递--skip-grant-tables以禁用服务器上的所有auth。

使用skip-grant-tables时,有一点值得注意。

一旦用skip-grant-tables重新启动mysqld,就不能使用GRANT和REVOKE命令。

选项1)更新root @ localhost的密码;

你可以这样做:

 UPDATE mysql.user SET password=PASSWORD('whateverpasswordyouwant') WHERE user='root' and host='localhost'; 

然后重新启动mysqld。

选项2)你可以直接插入一个logging到mysql.user。 如果你想为你自己build立一个新的用户叫做超级用户,你必须做下面的事情(这对于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的时候,每个人和他的grammadm都可以不经过身份validation就login。 你应该像这样启动mysql:

 service mysql restart --skip-grant-tables --skip-networking 

这将禁用TCP / IP,没有人可以潜入数据库。 完成后,请执行以下操作:

 service mysql restart