用户root访问被拒绝 - MAC OS上的mysql

时间:2013-08-20 15:48:40

标签: mysql macos

我知道怎么在ubuntu上跳过这个问题,但我怎么能在MAC OS上做呢?

如何在MAC上为mysql设置密码?

1)不起作用

mysqladmin -u root password NEWPASSWORD

2)不起作用

mysqld --skip-grant-tables --skip-networking &

3)这有效:

mysql root password forgotten

10 个答案:

答案 0 :(得分:32)

您可以在Mac(El Capitan)上执行以下操作

  1. 打开终端窗口,如果已经运行,请使用以下命令停止mysql。

    sudo /usr/local/mysql/support-files/mysql.server stop

    您还可以查看系统偏好设置> MySQL查看它是否正在运行

  2. 使用以下命令启动MySQL:

    sudo /usr/local/mysql/bin/mysqld_safe --skip-grant-tables

  3. 打开一个新的终端窗口/标签:

    sudo /usr/local/mysql/bin/mysql -u root

    这应该打开" mysql"提示。执行以下命令:

    $mysql> UPDATE user SET authentication_string=PASSWORD("my_password") WHERE User='root';

    疑难解答提示:

    A)5.7之前的MySql版本的命令是:

    $mysql> UPDATE user SET Password=PASSWORD('my_password') where USER='root';

    B)如果看到ERROR 1046 (3D000): No database selected,请先运行此命令:

    use mysql;

    C)如果你看到未知的"密码"字段错误,然后运行此命令:

    UPDATE USER SET AUTHENTICATION_STRING=password('NewPassword') WHERE user='root'; $mysql> FLUSH PRIVILEGES; $mysql> EXIT

  4. 停止MySql服务器

    sudo /usr/local/mysql/support-files/mysql.server stop

  5. 通过系统偏好设置>重启MySQL MySql或使用命令。

答案 1 :(得分:5)

您可以在iMac或Mac(High Sierra)上执行以下操作

打开终端窗口,如果mysql已在运行,请停止它。您还可以查看此系统偏好设置> MySQL>看它是否正在运行。

使用此命令启动MySQL以跳过主表

sudo /usr/local/mysql/bin/mysqld_safe --skip-grant-tables

打开一个新的终端窗口/标签..

sudo /usr/local/mysql/bin/mysql -u root

这应该打开“mysql”提示符。执行以下命令:

A)MySQL 5.6及以下

UPDATE mysql.user SET password=PASSWORD('NewPassord') WHERE user='root';

- 或 -

B)MySQL 5.7 +

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

通过系统偏好设置>重启MySQL MySql或使用命令。

答案 2 :(得分:3)

对于MySQL 5.7,我不得不使用:

  

更新用户SET authentication_string = PASSWORD(' YourNewPassword'),   password_expired =' N'用户=' root';

答案 3 :(得分:3)

解决方案

App.bootstrap(args, "profiles=mysql,prod", "on.address=0.0.0.0", "on.port=8886" ).jpa();

不是为我工作,但我确实是

UPDATE user SET authentication_string=PASSWORD("my_password") WHERE User='root';

并且能够继续。我正在使用8.0.12版。

答案 4 :(得分:3)

针对MariaDB版本的非常简单的修复:10.4.6-MariaD macOS上的Mojave

我已经回答了所有答案。其中一些为我工作,有些则没有。我找到了一种在macOS或OSX上解决此问题的简单方法。步骤如下:

先决条件:

应该安装Homebrew。使用以下link在macOS或OSX上安装自制软件。

安装mariadb:

  1. brew install mariadb
  2. 启动MySQL Server:mysql.server start或运行brew services start mariadb 以在登录计算机时启动MySQL Server。
  3. 进入MySQL实例 sudo mysql -u root

注意:mysql -u root将引发错误ERROR 1698 (28000): Access denied for user 'root'@'localhost',因此请使用sudo运行此命令。

  1. 现在要更改root用户的密码,我尝试了以下命令:

    1. UPDATE user SET password=PASSWORD("mypassword") WHERE User='root';
      • 这引发了错误:ERROR 1348 (HY000): Column 'Password' is not updatable
    2. UPDATE user SET authentication_string=PASSWORD("mypassword") WHERE User='root';
      • 这引发了错误:ERROR 1348 (HY000): Column 'authentication_string' is not updatable
  2. 但是以下命令有效

    • ALTER USER 'root'@'localhost' IDENTIFIED BY 'mypassword';
      • 答复为:Query OK, 0 rows affected (0.009 sec)

因此,对我来说,这是通过brew安装的10.4.6-MariaD版本的简单修复。希望这也会对您有帮助。

答案 5 :(得分:2)

MACOS 10.14 MOJAVE || MYSQL 8.0.15

这在我的Mac上不起作用:

  

sudo /usr/local/mysql/support-files/mysql.server stop

这实际上是可行的:

sudo /usr/local/mysql-8.0.15-macos10.14-x86_64/support-files/mysql.server stop

安装文件夹可能因用户而异,请注意!

或者只是检查>系统偏好设置> MySQL>如果服务器正在运行,请将其停止。

然后

使用以下命令启动MySQL:

sudo /usr/local/mysql-8.0.15-macos10.14-x86_64/bin/mysqld_safe --skip-grant-tables

打开一个新的终端窗口/标签:

sudo /usr/local/mysql-8.0.15-macos10.14-x86_64/bin/mysql -u root

这应该打开“ mysql”提示。执行以下命令(如果没有完整的查询,请向右滚动*):

UPDATE mysql.user SET authentication_string='your-password-goes-here' WHERE user='root' and host='localhost';

记住

  

mysql-8.0.15-macos10.14-x86_64

(在我的情况下)是本地计算机上的安装文件夹,由于操作系统版本,mysql版本,所使用的安装方法等原因,它可能与我的不同。

答案 6 :(得分:0)

我很难在MAC Sierra 10.12.6,MySql版本5.7.17上解决此问题

以下步骤对我有用:

打开“终端”窗口,如果已经运行mysql,请使用以下命令停止mysql。

sudo /usr/local/mysql/support-files/mysql.server stop

使用以下命令启动MySQL:

sudo / usr / local / mysql / bin / mysqld_safe --skip-grant-tables

打开一个新的终端窗口/标签:

sudo / usr / local / mysql / bin / mysql -u根

这将打开“ mysql”提示。 在mysql提示符下一一执行以下命令:

use mysql;

UPDATE user SET authentication_string = PASSWORD('my_new_password'), password_expired = 'N' WHERE User = 'root';

FLUSH PRIVILEGES;

EXIT

现在先停止MySql服务器,然后使用以下命令启动它

sudo /usr/local/mysql/support-files/mysql.server stop

sudo /usr/local/mysql/support-files/mysql.server start

希望这可以解决您的问题。

答案 7 :(得分:0)

我发现,在Mac Mojave中,至少如果直接从下载MySQL Community Package而不是通过brew进行安装,那么显然,您仍然需要在停止后通过“系统偏好设置”屏幕插入为“ root”选择的密码,以安全模式(--skip-grant-tables)和刷新特权重新启动。然后,您可以以root用户身份登录phpMyAdmin。这是在尝试了至少20套不同的建议/说明(包括此页上面列出的建议)之后解决的。希望它能对某人有所帮助!

答案 8 :(得分:0)

sudo mysql -uroot
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('new_password');
flush privileges;
Ctrl+D
mysql -uroot -pnew_password  # will work now

请注意第一行的sudo

答案 9 :(得分:0)

我曾经尝试过所有解决方案,但没有任何效果。最终,突然我找到了解决方案!我使用10.5.8-MariaDB Homebrew。

    USE mysql;
    SELECT user, authentication_string, plugin, host FROM mysql.user;

For some reasons authentication_string is invalid and it's what we need to fix

然后只需运行以下命令:

ALTER USER 'root'@'localhost' IDENTIFIED BY '';