简而言之,我继承了一个项目......它有一个在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 ..?
尝试使用跳过授权表和网络运行服务:
/etc/init.d/mysql stop
LOG OUTPUT mysqld --skip-grant-tables --skip-networking --user=root &
output 尝试启动客户端,但客户端说:
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
启动mysql服务器时,这是LOG OUTPUT
下面的答案是正确的,只是确保/var/run/mysqld/
其他mysqld无法启动。
答案 0 :(得分:2)
https://dev.mysql.com/doc/refman/5.7/en/resetting-permissions.html
B.5.3.2.3重置Root密码:通用指令
- 如有必要,请停止MySQL服务器,然后使用--skip-grant-tables选项重新启动它。这使任何人都可以在没有密码和所有权限的情况下进行连接,并禁用帐户管理语句,例如ALTER USER和SET PASSWORD。由于这是不安全的,您可能希望将--skip-grant-tables与--skip-networking结合使用,以防止远程客户端连接。
醇>
-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。