我有Linux的root密码。 那台机器上有MySQL服务器。 其中一个网站的ini被重写,现在它不能到达mysql数据库。 我没有mysql root来更改数据库用户的密码。 服务器所有者现在正在休假,所以我不能要求他给我的MySQL根。 我可以重置mysql的root密码,但我不想要。
我需要:
如何做点1和4?
通用密码重置过程通过创build重置根密码的初始化文件来执行。 然后用一个选项重新启动服务器,迫使它以root用户身份运行该脚本。
示例脚本显示您重置根密码,但没有理由不能简单地让脚本重置要重置的用户的密码。
所以,如果你有能力重新启动mysql服务器,并指定一个初始化文件,你可以跳过步骤1,2和4,只需以root用户身份运行一个脚本。 真的没有理由需要触摸根帐户。
这可以做到没有…
一旦你login到Linux Box,为了使用密码t3mpp@assw0rd为自己创build一个临时根目录,执行以下步骤
STEP 01) service mysql restart --skip-networking --skip-grant-tables
步骤02)在Linux提示符下,inputmysql然后回车
步骤03)运行这个SQL命令
SELECT COUNT(1) RootLocalhostExists FROM mysql.user WHERE user='root' AND host='localhost';
RootLocalhostExists为0,请在此停止。 在我的答案留下评论。 RootLocalhostExists为1,则继续执行步骤04。 STEP 04)执行这些SQL命令
CREATE TABLE mysql.user2 LIKE mysql.user; INSERT INTO mysql.user2 SELECT * FROM mysql.user WHERE user='root' AND host='localhost'; UPDATE mysql.user SET PASSWORD=PASSWORD('t3mpp@assw0rd') WHERE user='root' AND host='localhost';
STEP 05) service mysql restart
这将做你的步骤1-3。
要恢复原始的MySQL根目录,请执行此操作( 不需要MySQL重新启动 ):
步骤01)在Linux提示符下,inputmysql -uroot -pt3mpp@assw0rd然后回车
步骤02)执行以下SQL
DELETE FROM mysql.user WHERE user='root' AND host='localhost'; INSERT INTO mysql.user SELECT * FROM mysql.user2; DROP TABLE mysql.user2; FLUSH PRIVILEGES; EXIT
而已。
试一试 !!!
如果你的mysql服务器运行在debian(或者ubuntu或者类似的)上,你可以使用debian-sys-maint用户而不是mysql root用户。 看看/etc/mysql/debian.cnf
它有超级权限,可以更改用户的密码。