我在 CentOS 上运行 ISPConfig,但我不知道如何操作,但我似乎没有 root mysql 用户。
我可以用以下方法停止 mysqld
/etc/init.d/mysqld stop
重新启动并跳过授权表
mysqld_safe --skip_grant_tables &
mysql> SELECT * FROM sql.user
我看到我之前创建的 4 个用户,但没有 root 用户。我尝试将其放入文件 /root/rootreset.sql 中。
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY 'my_pass' WITH GRANT OPTION;
从该文件开始
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
看起来 SQL 已执行,我没有看到错误,但是服务似乎没有运行,如果没有这个错误,我就无法连接到它。
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (111)
我尝试在启动后从控制台运行 SQL,--skip-grant-table
但出现此错误。
ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement
这看起来信息量很大,但我已经尝试了网上各种建议,但毫无进展。我该怎么办?
超级用户,帮助我,你是我唯一的希望。
答案1
我关注了这些指示现在我的 root 用户已列在用户表中,我可以用它登录。它似乎以 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