简而言之,我继承了一个项目...它有一个在 LAMP 堆栈上运行的现场制作网站。我有服务器的 root 访问权限,没人知道 mysql root 密码。此外,应用程序使用的用户无法访问 mysql 客户端,出于某种原因,凭据只能在应用程序中使用。
我正在尝试使用 mysql 的指令重置 root 密码 https://dev.mysql.com/doc/refman/5.7/en/resetting-permissions.html
服务器正在运行 ubuntu 16 lts 和 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 和选项启动服务:
mysqld --skip-grant-tables --skip-networking --user=root &
output 尝试启动客户端,但客户端说:
root@...:/home/john# mysql -u root ERROR 2002 (HY000): 无法通过套接字连接到本地 MySQL 服务器 '/var/run/mysqld/mysqld.sock' (2)
1 + 退出 1 mysqld --skip-grant-tables --skip-networking --user=root
当启动 mysql 服务器时,这是 LOG OUTPUT
下面的答案是正确的,只要确保你有 /var/run/mysqld/
否则 mysqld 无法启动。
最佳答案
https://dev.mysql.com/doc/refman/5.7/en/resetting-permissions.html
B.5.3.2.3 Resetting the Root Password: Generic Instructions
- Stop the MySQL server if necessary, then restart it with the --skip-grant-tables option. This enables anyone to connect without a password and with all privileges, and disables account-management statements such as ALTER USER and SET PASSWORD. Because this is insecure, you might want to use --skip-grant-tables in conjunction with --skip-networking to prevent remote clients from connecting.
-或-
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。
关于mysql - 在没有mysql客户端访问权限的情况下重置mysql root密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48842142/