MYSQL 错误 1045 拒绝访问

Posted

技术标签:

【中文标题】MYSQL 错误 1045 拒绝访问【英文标题】:Access Denied for MYSQL ERROR 1045 【发布时间】:2012-11-08 22:21:15 【问题描述】:

我刚买了一个新的 macbook pro (OS X 10.8.2) 并试图在上面设置 mysql。到目前为止,我已经能够安装它,但我无法获得我的 root 用户访问权限(或任何用户)。我计划将它用于Python,在我的另一台计算机上我只使用 MYSQL(没有 MAMP),我更喜欢保持这种方式。

作为参考,我做了以下操作:

$ alias mysql=/usr/local/mysql/bin/mysql $ sudo /Library/StartupItems/MySQLCOM/MySQLCOM start $ alias mysqladmin=/usr/local/mysql/bin/mysqladmin

当我输入 mysqlmysql -u root -p 时,它给了我这个:

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

ERROR 1045 (28000): Access denied for user 'jmitch'@'localhost' (using password: NO) 取决于我使用的措辞

MYSQL 正在我的系统首选项中运行。感谢您的帮助。

【问题讨论】:

howtoforge.com/reset-forgotten-mysql-root-password 【参考方案1】:

我想为 MySQL 5.7 添加这一点,只需更改 authentication_string 列是行不通的。这是因为 MySQL 从不实际使用这些值进行 root 身份验证,它使用插件。据我所知,这个插件验证你也是主机帐户的 root(所以你必须 sudo mysql -u root)。

我能够让它工作的唯一方法是运行它:

UPDATE mysql.user
SET authentication_string=PASSWORD(''), plugin=''
WHERE mysql.user = 'root';

还应注意,5.7 的官方 MySQL 文档从未提及这一点。遵循此文档到信中,您将一事无成。

【讨论】:

我在 OS X 10.12.3 上运行 5.7* 并且不能再使用 mysql stop/start 别名,得到问题的错误。您的上述答案看起来很有希望,但给出了:ERROR 1054 (42S22): Unknown column 'mysql.user' in 'where clause'?【参考方案2】:

可能更新程序包的更新覆盖了 root 密码。

要恢复它:

停止 mysqld 守护进程。

$ sudo service mysqld stop

进入mysql/bin目录

$ cd /usr/bin

使用此选项启动 mysql 守护程序:

$ sudo mysqld_safe --skip-grant-tables

打开另一个终端并打开一个mysql会话来执行这个:

$ mysql

mysql> use mysql;

see Note1 below for next line.
mysql> UPDATE user SET password=PASSWORD('YOUR_NEW_PASSWORD_HERE') WHERE user = 'root';

mysql> exit;

现在杀掉mysqld_safe进程,正常重启mysqld:

$ sudo service mysqld start

注意 1: password 是 5.7 版之前的表 mysql.user 中的列名。之后它变成了authentication_string。相应地更改您的更新声明。

【讨论】:

$ sudo service mysql stop 返回sudo: service: command not found 在 sudo mysqld_safe --skip-grant-tables 模式下运行守护进程可能不是真正需要的,我试过没有它,但它仍然解决了我的问题(这是在 mac 10.9 上) 这对我在 OS X Mavericks 10.9 上有效,因为在输入 'mysql -u root -p' 时有很多访问被拒绝,谢谢! 如果您遇到“'字段列表'中的未知列'密码'”请参考这里:***.com/a/31122246/1371949 是的,5.7版的列名是authentication_string【参考方案3】:

在 Mac OSX 10.9 Mavericks 上,我使用了 support-files 目录中的“mysql.server”脚本,而不是 mysqld_safe 和 service 脚本。

$sudo ./mysql.server stop
$sudo ./mysql.server start --skip-grant-tables
$ mysql
mysql> use mysql;
mysql> UPDATE user SET password=PASSWORD('YOUR_NEW_PASSWORD_HERE') WHERE user = 'root';
mysql> exit;
$sudo ./mysql.server stop
$sudo ./mysql.server start

【讨论】:

我没有任何名为mysql 的数据库,我有两个数据库:information_schematest。我通过这个命令连接:`mysql -h127.0.0.1` 就像通过 mysql 我得到了这个错误:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)【参考方案4】:

我在尝试通过 Mountain Lion 上的终端访问 MAMP 的 MySQL 时遇到了类似的问题。

--no-defaults 标志为我解决了这个问题。

/Applications/MAMP/Library/bin/mysql --no-defaults -u root -proot -h localhost

【讨论】:

以上是关于MYSQL 错误 1045 拒绝访问的主要内容,如果未能解决你的问题,请参考以下文章

MySQL 访问被拒绝 #1045 [重复]

安装后mysql登录[错误1045(28000):用户'mike'@'localhost'的访问被拒绝(使用密码:YES)]

错误 1045 (28000):用户访问被拒绝 [重复]

Mysql 错误 1045 - 'db_user'@'@localhost' 的访问被拒绝(有两个 at 符号 @)

用户 'ODBC'@'localhost' 的错误 1045 访问被拒绝(不使用密码)

mysql拒绝访问 Error 1044/1045 问题的解决