我刚刚获得了一个新的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正在我的系统首选项中运行。谢谢你的帮助。
答案 0 :(得分:22)
也许更新包更新程序覆盖了root密码。
要恢复它:
停止mysqld deamons。
$ 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
。相应地更改您的更新声明。
答案 1 :(得分:6)
在Mac OSX 10.9 Mavericks上我使用了' mysql.server' support-files目录中的脚本,而不是mysqld_safe和服务脚本。
$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
答案 2 :(得分:2)
我在尝试通过Mountain Lion上的终端访问MAMP的MySQL时遇到了类似的问题。
--no-defaults标志为我解决了它。
/Applications/MAMP/Library/bin/mysql --no-defaults -u root -proot -h localhost
答案 3 :(得分:1)
我想补充一点,对于MySQL 5.7而言,仅仅更改authentication_string列并不起作用。这是因为MySQL从未实际使用这些值进行根身份验证,它使用插件。据我所知,这个插件验证你也是主机帐户的root(所以你必须sudo mysql -u root)。
我能够让这个工作的唯一方法是运行:
Alamofire.request
还应该注意5.7的官方MySQL文档从未提到过这一点。按照这封文件写到这封信就没那么了。