9

我刚买了一个新的 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 在我的系统首选项中运行。谢谢您的帮助。

4

4 回答 4

22

也许更新程序包更新程序覆盖了 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: 是5.7 版本之前password的表中的列名mysql.user之后就变成了authentication_string。相应地更改您的更新声明。

于 2012-11-20T19:10:44.200 回答
6

在 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
于 2014-06-30T15:40:20.923 回答
2

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

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

/Applications/MAMP/Library/bin/mysql --no-defaults -u root -proot -h localhost
于 2013-07-17T17:56:45.537 回答
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 文档从未提及这一点。遵循此文档的信函让您一无所获。

于 2016-08-31T11:04:24.390 回答