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
当我输入 mysql
或 mysql -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_schema
和test
。我通过这个命令连接:`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(28000):用户'mike'@'localhost'的访问被拒绝(使用密码:YES)]
Mysql 错误 1045 - 'db_user'@'@localhost' 的访问被拒绝(有两个 at 符号 @)