重置mysql root密码,无需mysql客户端访问

时间:2018-02-17 14:03:48

标签: mysql

简而言之,我继承了一个项目......它有一个在LAMP堆栈上运行的实时生产站点。我有root访问服务器没人知道mysql root密码。此外,应用程序使用的用户无法访问mysql客户端,由于某种原因,凭据仅适用于应用程序。

我正在尝试使用mysql的说明重置root密码 https://dev.mysql.com/doc/refman/5.7/en/resetting-permissions.html

服务器运行ubuntu 16 lts with mysql 5.7.19。

按照上面的指南,他们用以下内容指示关闭mysql:

kill `cat /mysql-data-directory/host_name.pid`

我在启动时运行sql脚本...但结果是我仍然无法通过root登录到mysql shell:/

任何人都有可靠的方法来重置root pass ..?

尝试使用跳过授权表和网络运行服务:

  1. 停止服务:/etc/init.d/mysql stop LOG OUTPUT
  2. 使用mysqld和选项启动服务:mysqld --skip-grant-tables --skip-networking --user=root & output
  3. 尝试启动客户端,但客户端说:

    root @ ...:/ home / john#mysql -u root ERROR 2002(HY000):无法通过socket' /var/run/mysqld/mysqld.sock'连接到本地MySQL服务器; (2)

    1 +退出1 mysqld --skip-grant-tables --skip-networking --user = root

  4. 启动mysql服务器时,这是LOG OUTPUT

  5. 下面的答案是正确的,只是确保/var/run/mysqld/其他mysqld无法启动。

1 个答案:

答案 0 :(得分:2)

https://dev.mysql.com/doc/refman/5.7/en/resetting-permissions.html

  

B.5.3.2.3重置Root密码:通用指令

     
      
  1. 如有必要,请停止MySQL服务器,然后使用--skip-grant-tables选项重新启动它。这使任何人都可以在没有密码和所有权限的情况下进行连接,并禁用帐户管理语句,例如ALTER USER和SET PASSWORD。由于这是不安全的,您可能希望将--skip-grant-tables与--skip-networking结合使用,以防止远程客户端连接。
  2.   

-OR -

https://www.codero.com/knowledge-base/content/33/296/en/how-to-reset-your-root-mysql-password.html

$  mysqld --skip-grant-tables --skip-networking &
$  mysql -u root

 ...change your password
 ...reset mysql without --skip-grant-tables and --skip-networking

更新

mysqld可能无法以root或您的系统帐户运行。请参阅here

$ mysqld --skip-grant-tables --skip-networking --user=root &

或者你可以在停止mysql服务器后直接修改my.cnf文件。我推荐的方式。

[mysqld]
...
# add the following two settings to configure variables for reseting password.
skip-grant-tables
skip-networking

重启mysqld后。使用mysql cli客户端执行以下sql语句来更改密码。

UPDATE mysql.user SET authentication_string = PASSWORD('MyNewPass')
WHERE User = 'root' AND Host = 'localhost';
FLUSH PRIVILEGES;

最后,停止mysqld,然后回滚my.cnf,然后重新启动mysqld。