我在本网站和许多其他论坛上以多种形式看过同样的问题。但是,我已经尝试了所有的解决方案,但仍然有相同的结果。我很确定我曾经在这个MySQL服务器上有过root权限,我甚至可以使用phpMyAdmin工具在其他查询中创建数据库。现在,当我访问phpMyAdmin并点击数据库时,我受到了欢迎:
如果我使用命令工具,我可以使用:
登录mysql -u root -p
我被提示输入密码,我这样做了。当我尝试做任何其他事情时,请说:
mysql> SELECT user, host FROM mysql.user;
I get the following:
ERROR 1142 (42000): SELECT command denied to user 'root'@'localhost' for table 'user'
我也跟着这篇文章(http://benrobb.com/2007/01/15/howto-remote-root-access-to-mysql/),因为我是从远程机器ssh到这个MySQL服务器。再次,当我尝试:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
以各种形式,我受到了讨厌的欢迎:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
即使我输入的密码也是我用来登录的!我还想提一下,昨天我更新了我的梨资源,我想知道这是不是这个混乱的原因......
如果有人能指导我,我会非常感激。感谢您的所有时间和考虑。
Elshae
**** ****更新 在尝试排除故障并运行mysqld时,我现在无法启动服务器备份!每次我跑:
/etc/init.d/mysql start
Starting MySQL database server: mysqld . . . . . . . . . . . . . . failed!
我该怎么办?
答案 0 :(得分:6)
停止MySQL服务(UNIX风格):
/etc/init.d/mysqld stop
使用权限启动MySQL:
/usr/bin/mysqld_safe --skip-grant-tables
使用root用户连接到mysql DB
/usr/bin/mysql -uroot -p mysql
更新root权限
update mysql.user
set Select_priv='Y',
Insert_priv='Y',
Update_priv='Y',
Delete_priv='Y',
Create_priv='Y',
Drop_priv='Y',
Reload_priv='Y',
Shutdown_priv='Y',
Process_priv='Y',
File_priv='Y',
Grant_priv='Y',
References_priv='Y',
Index_priv='Y',
Alter_priv='Y',
Show_db_priv='Y',
Super_priv='Y',
Create_tmp_table_priv='Y',
Lock_tables_priv='Y',
Execute_priv='Y',
Repl_slave_priv='Y',
Repl_client_priv='Y',
Create_view_priv='Y',
Show_view_priv='Y',
Create_routine_priv='Y',
Alter_routine_priv='Y',
Create_user_priv='Y',
Event_priv='Y',
Trigger_priv='Y'
where User='root';
之后,您只需要停止MySQL服务并重新开始。
答案 1 :(得分:2)
我感谢大家的反馈,我最终得到了它。解决
的问题/etc/init.d/mysql start
Starting MySQL database server: mysqld . . . . . . . . . . . . . . failed!
我做了:
ps aux | grep mysql
哪位给了我:
root 15265 0.0 0.1 3896 1284 pts/10 S 12:41 0:00 /bin/sh /usr/bin/mysqld_safe
mysql 15302 1.6 2.8 132532 29600 pts/10 Sl 12:41 0:00 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --user=mysql --pid-file=/var/run/mysqld/mysqld.pid --skip-external-locking --port=3306 --socket=/var/run/mysqld/mysqld.sock
root 15303 0.0 0.0 3008 608 pts/10 S 12:41 0:00 logger -p daemon.err -t mysqld_safe -i -t mysqld
root 16160 0.0 0.0 3120 708 pts/10 R+ 12:42 0:00 grep mysql
然后我做了:
kill -9 15265
kill -9 15302
之后我能用:
启动MySQL/etc/init.d/mysql start
从那里我发现了这篇文章: https://help.ubuntu.com/community/MysqlPasswordReset和我的魔力是:
/usr/sbin/mysqld --skip-grant-tables --skip-networking &
我能够跟随线程并且也做了:
GRANT ALL PRIVILEGES ON *.* TO root@localhost IDENTIFIED BY 'yournewrootpassword' WITH GRANT OPTION;
唯一有点奇怪的是,root仍然没有权利从phpMyAdmin创建数据库以及root需要的其他权限。但是,我能够从命令行创建数据库,现在我可以忍受!
再次感谢大家的时间和所有帮助!
答案 2 :(得分:1)
如果您以拥有所有权利的用户身份登录,则命令GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
将起作用...
由于您没有GRANT
的权利,在您的情况下,上述声明将无效...请联系管理员并获取ACCESS以进行连接...
答案 3 :(得分:0)
由于您具有对客户端的本地访问权限,因此您可能会尝试使用mysqladmin
重置root密码:
> mysqladmin password yournewrootpassword
如果您可以成功登录,则可能需要再次授予root访问权限,然后才能访问任何数据库:
GRANT ALL PRIVILEGES ON *.* TO root@localhost IDENTIFIED BY 'yournewrootpassword' WITH GRANT OPTION;