mysql - 在没有mysql客户端访问权限的情况下重置mysql root密码

标签 mysql

简而言之,我继承了一个项目...它有一个在 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 的可靠方法......?

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

  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): 无法通过套接字连接到本地 MySQL 服务器 '/var/run/mysqld/mysqld.sock' (2)

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

  4. 当启动 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

  1. 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/

相关文章:

mysql - SQL,根据引用它们的第三个表从两个表中选择

php - Windows 7 中 mysql php 连接问题

java - 你会在 MySQL 中映射 Java/Hibernate 中的 BigDecimal 什么类型?

Php angularJS 项目未在简单的 html 表格中显示数据

mysql - 微调 MYSQL 以获得最佳性能

mysql - 如何连接 MySQL 工作台和 MAMP PRO?

php - MySql 西类牙语字符数据

mysql删除连接无故失败?

MySQL按第一列排序,按第二列排序

php - 在 javascript 中公开 MySQL 表名称是否存在安全风险?