我继承了一个安装了mysql的服务器.我没有任何用户的mysql密码,甚至没有root(虽然我有linux root密码).另外,我只知道另一个用户帐户besdies root,并且没有权限执行任何操作,甚至SELECT.
我尝试停止mysql servicw,使用skip grant tables选项重新启动,只是在没有密码的情况下登录:
service mysqld stop
service mysqld start --skip-grant-tables &
mysql -u root
Run Code Online (Sandbox Code Playgroud)
但是得到以下错误:
Access denied for user 'root'@'localhost' (using password: NO)
Run Code Online (Sandbox Code Playgroud)
然后我尝试重置密码:
mysqladmin -u root password 'newpw'
Run Code Online (Sandbox Code Playgroud)
但这也给出了访问被拒绝的错误.
我还尝试以其他用户身份登录(没有pw)并执行以下命令:
UPDATE mysql.user SET Password=PASSWORD('MyNewPass') WHERE User='root';
Run Code Online (Sandbox Code Playgroud)
并得到此错误:
ERROR 1142 (42000): UPDATE command denied to user ''@'localhost' for table 'user'
Run Code Online (Sandbox Code Playgroud)
我也试过删除mysql并重新安装,但我得到了同样的错误.
有什么建议?
Ama*_*Bah 34
尝试sudo dpkg-reconfigure mysql-server-5.5
,您将被要求输入新的root密码.
将5.5替换为您当前的mysql-server版本
您需要确保使用sudo命令以root用户身份运行命令。
我发现此指令可用于重置mysql密码,效果很好。
按照此过程,您将禁用MySQL服务器上的访问控制。所有连接都将具有root用户访问权限。将您的服务器从网络上拔出或至少禁用远程访问是一件好事。
要重置mysqld密码,请按照以下说明进行操作:
Stop the mysql demon process using this command :
sudo /etc/init.d/mysql stop
Start the mysqld demon process using the --skip-grant-tables option with this command
sudo /usr/sbin/mysqld --skip-grant-tables --skip-networking &
Run Code Online (Sandbox Code Playgroud)
由于此时您尚未检查用户特权,因此禁用网络是最安全的。在Dapper中,/ usr / bin / mysqld ...不起作用。但是,mysqld --skip-grant-tables确实可以。
start the mysql client process using this command
mysql -u root
from the mysql prompt execute this command to be able to change any password
FLUSH PRIVILEGES;
Then reset/update your password
SET PASSWORD FOR root@'localhost' = PASSWORD('password');
If you have a mysql root account that can connect from everywhere, you should also do:
UPDATE mysql.user SET Password=PASSWORD('newpwd') WHERE User='root';
Alternate Method:
USE mysql
UPDATE user SET Password = PASSWORD('newpwd')
WHERE Host = 'localhost' AND User = 'root';
And if you have a root account that can access from everywhere:
USE mysql
UPDATE user SET Password = PASSWORD('newpwd')
WHERE Host = '%' AND User = 'root';
Run Code Online (Sandbox Code Playgroud)
对于这两种方法,一旦收到指示成功查询的消息(受影响的一行或多行),则刷新特权为:
冲洗特权;
然后停止mysqld进程并以经典方式重新启动它:
sudo /etc/init.d/mysql停止
sudo /etc/init.d/mysql开始
归档时间: |
|
查看次数: |
35392 次 |
最近记录: |