【问题标题】:Access denied for user root - mysql on MAC OS用户 root 访问被拒绝 - MAC OS 上的 mysql
【发布时间】:2013-08-22 18:25:24
【问题描述】:

我知道如何在 ubuntu 上跳过这个问题,但我如何在 MAC OS 上做到这一点?

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

1) 不起作用

mysqladmin -u root password NEWPASSWORD

2) 不工作

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

3) 这行得通:

mysql root password forgotten

【问题讨论】:

  • 已经设置了一个您不知道的密码,还是只需要设置一个初始密码?
  • 我现在不需要这个。 mysql 现在完全停止工作,任何卸载都无法修复它。
  • 删除周围的所有数据文件。
  • ok 现在mysql开始工作了
  • Soo 如何设置root密码。我只看到用户 root'@'localhost 的访问被拒绝..我尝试了每一个 ubuntu 方法,但什么也没做 - 我不能做 mysql -u root

标签: mysql macos


【解决方案1】:

您可以在 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) MySql 5.7 之前版本的命令是:

    $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。

【讨论】:

  • MySQL 5.7,密码字段被重命名为'authentication_string'。应使用以下命令: $mysql> UPDATE user SET authentication_string=PASSWORD("my_password") WHERE User='root';
  • 似乎这不再有效,我收到ERROR 1046 (3D000): No database selected
  • 完美运行。我想知道为什么一开始安装和启动数据库如此复杂。它是为踢出一些新用户而设计的吗?
  • 我收到此错误:ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '('mypassword') WHERE user='root'' at line 1 知道可能是什么问题吗?
  • @rraallvv 这不是语法问题。功能密码有问题。函数 PASSWORD 已从版本 8.0.11 中删除。
【解决方案2】:

解决办法

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

不适合我,但我做到了

FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPassword';

并且能够继续。我使用的是 8.0.12 版。

【讨论】:

  • 这是唯一没有给我错误的解决方案——但是,在停止和重新启动时,什么都没有改变;我仍然收到整个“ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)”业务。
  • ERROR 1064 (42000):您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 '("my_password") WHERE User='root'' 附近使用正确的语法
  • 仅供参考:函数 PASSWORD 已从版本 8.0.11 中删除。
  • @DraifKroneg 我也遇到了这个错误。就像 Roman 说的,这是因为 PASSWORD 功能。只需使用这样的字符串:UPDATE user SET authentication_string='my_password' WHERE user='root';
【解决方案3】:

您可以在 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';

通过 System Preferences > MySql 或使用命令重新启动 MySQL。

【讨论】:

  • 从 MySQL 5.7 开始,mysql.user 表中的密码字段称为“authentication_string”,因此查询变为UPDATE mysql.user SET authentication_string=PASSWORD('NewPassword') WHERE user='root';
  • 为我工作。更新了答案以反映@roibeart 对 MySQL 5.7+ 的正确评论。
  • 仅供参考:函数 PASSWORD 已从版本 8.0.11 中删除。
【解决方案4】:

MACOS 10.14 MOJAVE || MYSQL 8.0.15

这在我的 Mac 上不起作用:

sudo /usr/local/mysql/support-files/mysql.server 停止

但这确实有效:

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 版本、使用的安装方法等原因,它可能与我的不同,也可能不同。

【讨论】:

    【解决方案5】:

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

    我已经浏览了所有答案。其中一些对我有用,而另一些则不是。我找到了一种在 macOS 或 OSX 上解决此问题的简单方法。步骤如下:

    先决条件:

    应该安装 Homebrew。使用以下link 在 macOS 或 OSX 上安装 homebrew。

    安装 mariadb:

    1. brew install mariadb
    2. 启动 MySQL 服务器:mysql.server start 或运行 brew services start mariadb 以在登录计算机时启动 MySQL 服务器。
    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 版本,这对我来说是一个简单的修复。希望这对您也有帮助。

    【讨论】:

    • 这非常适合 mojavae 和使用自制软件完成的安装
    【解决方案6】:

    对于 MySQL 5.7,我必须使用:

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

    【讨论】:

    • 这在 Sierra 10.12.6 上使用 MySQL 5.7 执行,但仍然不允许您在使用“mysql -u root -p admin”重新启动数据库后登录。让我吃惊的是有多少时间被浪费在试图做一些应该简单的事情上。
    【解决方案7】:
    sudo mysql -uroot
    SET PASSWORD FOR 'root'@'localhost' = PASSWORD('new_password');
    flush privileges;
    Ctrl+D
    mysql -uroot -pnew_password  # will work now
    

    注意第一行的sudo

    【讨论】:

      【解决方案8】:

      我曾经尝试过所有解决方案,但都没有奏效。终于突然间我找到了解决方案!我使用 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 '';
      

      【讨论】:

        【解决方案9】:

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

        以下步骤对我有用:

        打开一个终端窗口,如果mysql已经在运行,使用下面的命令停止它。

        sudo /usr/local/mysql/support-files/mysql.server 停止

        用这个命令启动 MySQL:

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

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

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

        这将打开“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 停止

        sudo /usr/local/mysql/support-files/mysql.server 启动

        希望这能解决您的问题。

        【讨论】:

          【解决方案10】:

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

          【讨论】:

          • 是的,此解决方案基于 Mojave。它对我有用。
          【解决方案11】:

          我使用的是 Mac,我的解决方案与上面的有点不同

          1. cd 到我安装 mysql 的文件夹。就我而言,它是cd /opt/homebrew/Cellar/mysql/8.0.27/bin,因为我使用brew 安装mysql

          2. 使用mysqld_safe 无济于事。试试这个语法mysqld --skip-grant-tables &

          3. 输入mysql

          4. 输入FLUSH PRIVILEGES;

          5. 输入ALTER USER 'root'@'localhost' IDENTIFIED BY 'password you want';

          如果您看到ERROR 1819 (HY000): Your password does not satisfy the current policy requirements 错误。只需输入大写字母+数字+特殊字符的密码

          【讨论】:

            【解决方案12】:

            Mac OSX 12.1(蒙特雷)

            已安装 Oracle MySql: mysql Ver 8.0.28 for macos11 on x86_64 (MySQL Community Server - GPL)

            在安装后使用包安装,您设置的 root 密码似乎没有保存在服务器内的 mysql 数据库中。我从上面尝试了一些更新用户命令,最终解决问题的是系统偏好设置 > MySql > 初始化数据库 > [再次设置密码]。

            Initialize DB Screen

            停止数据库并重新启动能够创建与 root 用户的会话。现在它正在工作,我有点想把它扔掉,只是为了头疼而改用 mariadb。

            【讨论】:

              猜你喜欢
              • 2013-08-22
              • 1970-01-01
              • 2013-11-25
              • 2014-11-11
              • 2011-11-24
              • 2021-06-26
              • 1970-01-01
              • 2020-11-13
              • 2020-02-04
              相关资源
              最近更新 更多