我相信我已经删除了 MySQL root 用户,我该如何重新创建它?

Chr*_*ris 7 centos root mysql

我正在 CentOS 上运行 ISPConfig,但我不知道如何运行,但我似乎没有 root mysql 用户。

我可以停止 mysqld

/etc/init.d/mysqld stop
Run Code Online (Sandbox Code Playgroud)

再次启动并跳过授权表

mysqld_safe --skip_grant_tables &
mysql> SELECT * FROM sql.user
Run Code Online (Sandbox Code Playgroud)

我看到我之前创建的 4 个用户,但没有 root 用户。我试着把它放在一个文件 /root/rootreset.sql 中。

GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY 'my_pass' WITH GRANT OPTION;
Run Code Online (Sandbox Code Playgroud)

从那个文件开始

mysqld_safe --init-file=/root/rootreset.sql &

[1] 30039
[root@algrhckdj ~]# Starting mysqld daemon with databases from /var/lib/mysql/
STOPPING server from pid file /var/run/mysqld/mysqld.pid
111020 04:06:34  mysqld ended
[1]+  Done                    mysqld_safe --init-file=/root/rootreset.sql
Run Code Online (Sandbox Code Playgroud)

看起来sql执行了,我没有看到错误,但服务似乎没有运行,没有这个错误我无法连接到它。

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (111)
Run Code Online (Sandbox Code Playgroud)

开始后,我尝试从控制台运行 sql,--skip-grant-table但出现此错误。

ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement
Run Code Online (Sandbox Code Playgroud)

这似乎有很多信息,但我一直在网上尝试所有不同的建议,但一无所获。我该怎么办?

帮助我超级用户,你是我唯一的希望。

Chr*_*ris 4

我按照这些说明操作,我的根用户现在已列在用户表中,我可以使用它登录。它似乎是作为 mysql 用户而不是 root 执行这些步骤的。

root# /etc/init.d/mysqld stop
root# su mysql
mysql$ pwd
/home/mysql
mysql$ echo "GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY 'my_pass' WITH GRANT OPTION;"> mysql-init
mysql$ mysqld_safe --init-file=/home/mysql/mysql-init &
mysql$ rm mysql-init
mysql$ mysql -uroot -p   # woot, works
Run Code Online (Sandbox Code Playgroud)