【问题标题】:Setting the MySQL root user password on OS X在 OS X 上设置 MySQL root 用户密码
【发布时间】:2011-09-22 10:02:40
【问题描述】:

我刚刚在 Mac OS X 上安装了 MySQL。下一步是设置 root 用户密码,所以接下来我这样做了:

  1. 启动终端应用程序以访问 Unix 命令行。

  2. 在 Unix 提示下,我执行了以下命令:

    cd /usr/local/mysql/bin
    ./mysqladmin -u root password 'password'
    

但是,当我执行命令时

./mysql -u root,这就是答案:

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 224
Server version: 5.5.13 MySQL Community Server (GPL)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

我无需任何密码就可以进入mysql 命令行!

这是为什么?

【问题讨论】:

    标签: mysql macos passwords


    【解决方案1】:

    登录 MySQL 终端时尝试命令FLUSH PRIVILEGES。如果这不起作用,请在 MySQL 终端中尝试以下命令集

    mysql -u root
    
    mysql> USE mysql;
    mysql> UPDATE user SET password=PASSWORD("NEWPASSWORD") WHERE User='root';
    mysql> FLUSH PRIVILEGES;
    mysql> quit
    

    用您想要的任何密码更改 NEWPASSWORD。应该都准备好了!

    更新:从 MySQL 5.7 开始,password 字段已重命名为 authentication_string。更改密码时,请使用以下查询更改密码。所有其他命令保持不变:

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

    在 8.0.15(可能早于该版本)上,PASSWORD() 函数不起作用,如下面的 cmets 所述。你必须使用:

    UPDATE mysql.user SET authentication_string='password' WHERE User='root';

    【讨论】:

    • 从 MySQL 5.7 开始,列名发生了变化。您需要改用UPDATE mysql.user SET authentication_string=PASSWORD('password') WHERE User='root';
    • 感谢您的提醒。我将编辑我的答案以相应地反映。
    • 看起来 PASSWORD() 函数已被弃用,您应该将 'password' 放在等号的右侧
    • 如果您无法登录,这有什么帮助?
    • 执行这些步骤后。当我尝试使用新密码再次登录时,我得到ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
    【解决方案2】:

    安装 MySQL 后,您需要建立“root”密码。如果你不设置root密码,那么,好吧,没有root密码,你也不需要密码登录。

    也就是说,你需要建立一个root密码。

    使用终端输入以下内容:

    安装:设置root用户密码:

    /usr/local/mysql/bin/mysqladmin -u root password NEW_PASSWORD_HERE
    

    如果您犯了错误,或者需要更改 root 密码,请使用以下命令:

    修改root密码:

    cd /usr/local/mysql/bin/
    ./mysql -u root -p
    > Enter password: [type old password invisibly]
    
    use mysql;
    update user set password=PASSWORD("NEW_PASSWORD_HERE") where User='root';
    flush privileges;
    quit
    

    【讨论】:

    • 对于 MySQL 5.7 的用户,您应该使用update user set authentication_string=PASSWORD("NEW_PASSWORD_HERE") where User='root'; 而不是使用set password=...
    【解决方案3】:

    如果您忘记了为 root 设置的密码并需要重新设置,请按照以下步骤操作:

    1. 停止 mysqld 服务器,这因安装而异

    2. 在安全模式下运行服务器并绕过权限

      sudo mysqld_safe --skip-grant-tables;

    3. 在新窗口中连接数据库,设置新密码并刷新权限并退出:

      mysql -u root

      对于早于 MySQL 5.7 的 MySQL,请使用:

      UPDATE mysql.user SET Password=PASSWORD('your-password') WHERE User='root';

      对于 MySQL 5.7+ 使用:

      USE mysql;

      UPDATE mysql.user SET authentication_string=PASSWORD("your-password") WHERE User='root';

      刷新并退出:

      FLUSH PRIVILEGES;

      \q

    4. 停止安全模式服务器并重新启动常规服务器。新密码现在应该可以使用了。它对我来说就像一个魅力:)

    【讨论】:

    • 那太好了,谢谢!在 Mac OSx Mavericks (2014) 上使用 sudo /Library/StartupItems/MySQLCOM/MySQLCOM stop|start|restart
    • password 现在必须是 authentication_string
    • MySQL 5.7之后应该是UPDATE user SET authentication_string=PASSWORD("NEWPASSWORD") WHERE User='root';,就像@Scott说的那样。
    • 谢谢补充
    • 在 MacOSx 上,当使用“首选项”窗格“选项(Apple 菜单 -> 系统首选项...)安装 mySQL 时,我发现我首先必须使用首选项窗格停止 mySQL 才能完成步骤以上1个。使用sudo kill不起作用,因为Mac OSx会立即自动重新启动一个新的msql。一旦我使用首选项窗格停止mysql,我可以手动运行mysqld_safe --skip-grant-tables
    【解决方案4】:

    当我安装 OS X v10.10 (Yosemite) 时,我遇到了 MySQL 的问题。我尝试了很多方法,但没有一个奏效。我实际上找到了一个非常简单的方法。试试这个。

    1. 首先以超级用户(su)权限登录终端。

      sudo su

    2. 停止 MySQL

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

    3. 以安全模式启动:

      sudo mysqld_safe --skip-grant-tables

    4. 打开另一个终端,以su权限登录,然后,无密码登录MySQL客户端(mysql

      mysql -u root

    5. 修改密码

      UPDATE mysql.user SET Password=PASSWORD('new_password') WHERE User='root';

    6. 刷新权限

      FLUSH PRIVILEGES;

    7. 你现在完成了。

    【讨论】:

    • 非常感谢。我为此挣扎了一会儿。这是最新版本的mysql上的新东西吗?
    【解决方案5】:

    如果您忘记了 MySQL root 密码,不记得或想闯入..... 只要您知道 root 用户密码,您可以在 Linux 或 OS X 中从命令行重置 MySQL 数据库密码你所在的盒子:

    (1) 停止 MySQL

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

    (2) 以安全模式启动:

    sudo mysqld_safe --skip-grant-tables
    

    (3) 这将是一个持续的命令,直到进程完成打开另一个 shell/终端窗口,无需密码登录:

    mysql -u root
    
    UPDATE mysql.user SET Password=PASSWORD('password') WHERE User='root';
    

    在上面的 UPDATE 命令中,只需将 'password' 替换为您自己的新密码,请务必保留引号

    (4) 省钱又省事

    FLUSH PRIVILEGES;
    
    \q
    

    (5) 启动 MySQL

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

    【讨论】:

      【解决方案6】:

      在终端输入mysql -u root -p,然后点击Return

      输入您必须记下的当前 MySQL 密码。

      并设置密码:

      SET PASSWORD = PASSWORD('new_password');

      有关详细信息,请参阅此文档here

      【讨论】:

        【解决方案7】:

        mysql网站上提供的说明比上面说的那么清楚

        1. $ sudo /usr/local/mysql/support-files/mysql.server stop
        2. $ sudo /usr/local/mysql/support-files/mysql.server start --skip-grant-tables
        3. /usr/local/mysql/bin/mysql
        4. mysql> 刷新权限;
        5. mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';
        6. mysql> exit 或 Ctrl + z
        7. $ sudo /usr/local/mysql/support-files/mysql.server stop
        8. $ sudo /usr/local/mysql/support-files/mysql.server start
        9. /usr/local/mysql/support-files/mysql -u root -p
        10. 输入新密码,即 MyNewPass

        参考:http://dev.mysql.com/doc/refman/5.7/en/resetting-permissions.html

        【讨论】:

        • 在 mac os 10.12.6 中,第二个命令 ERROR!服务器退出而不更新PID文件(/usr/local/mysql/data/myhostname.pid)。
        • 感谢您指出在哪里可以找到文档。当您还可以使用 sudo launchctl unload -F /Library/LaunchDaemons/com.oracle.oss.mysql.mysqld.plist 和 sudo launchctl unload -F /Library/LaunchDaemons/com.oracle.oss 时,在 Mac 上会有点混乱.mysql.mysqld.plist 停止和启动 mysql。使用 sudo /usr/local/mysql/support-files/mysql.server stop 似乎是一种更好的方法。
        【解决方案8】:
        1. 停止 mysqld 服务器。
        • Mac OS X: 系统偏好设置MySQL停止 MySQL 服务器
        • Linux(从终端): sudo systemctl stop mysqld.service
        1. 以安全模式启动服务器并绕过权限

          • 从终端: sudo /usr/local/mysql/bin/mysqld_safe --skip-grant-tables
        2. 终端窗口中:

          • sudo /usr/local/mysql/bin/mysql -u root
        3. 这将打开 MySQL 命令行客户端。从这里输入:

          • UPDATE mysql.user SET authentication_string=PASSWORD('NewPassword') WHERE User='root';

          • FLUSH PRIVILEGES;

          • quit

        4. 再次停止mysqld服务器并以正常模式重新启动它。

          • Mac OS X(从终端): sudo /usr/local/mysql/support-files/mysql.server restart
          • Linux 终端: sudo systemctl restart mysqld

        【讨论】:

        • 对于在 High Sierra 上运行 5.7.23,这非常有效。谢谢。
        • 在 MySQL 8.0.11 中,第 4 步中的 set 函数被移除。你在这里检查,这个工作。 stackoverflow.com/a/52579886/621951
        【解决方案9】:

        对于新的 MySQL 5.7,由于某种原因 MySQL 的二进制命令没有附加到 shell,你必须这样做:

        1. 安装后重启 Mac。

        2. 启动 MySQL:

          系统偏好设置MySQL开始按钮

        3. 在终端进入 MySQL 安装文件夹:

          cd /usr/local/mysql/bin/
          
        4. 访问 MySQL:

          ./mysql -u root -p
          

          并输入给安装的初始密码。

        5. 在 MySQL 客户端,修改密码:

          mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPassword';

        【讨论】:

          【解决方案10】:

          如果您忘记密码或想将其更改为您的 MySQL:

          1. 启动终端并输入:

            sudo su
            
          2. 输入系统密码

          3. 停止你的 MySQL 服务器:

            sudo /usr/local/mysql/support-files/mysql.server stop
            
          4. 离开此窗口打开,运行第二个终端窗口并在此处输入:

            mysql -u root
            
          5. 然后更改您的 MySQL 密码:

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

            其中“new_password” - 您的新密码。 MySQL 不需要旧密码。

          6. 刷新、退出并检查您的新密码:

            FLUSH PRIVILEGES;
            
          7. 关闭所有窗口并检查您的 MySQL 新密码。

          【讨论】:

            【解决方案11】:

            如果您不记得密码,@radtek's answer 为我工作,但在我的情况下,我有 set up MySQL using brew,这意味着他的答案的第 1 步和第 2 步必须更改为:

            1. /usr/local/bin/mysql.server stop

            2. /usr/local/bin/mysqld_safe --skip-grant-tables

            注意:缺少sudo

            【讨论】:

              【解决方案12】:

              停止 MySQL 服务器

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

              以安全模式启动 MySQL

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

              更改根密码

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

              use mysql;
              UPDATE user SET authentication_string=PASSWORD('NEW_PASSWORD') WHERE user='root';
              FLUSH PRIVILEGES;
              exit
              

              测试

              运行/usr/local/mysql/bin/mysql -u root

              现在输入新密码开始使用 MySQL。

              【讨论】:

                【解决方案13】:

                这正是对我有用的:

                1. 确保没有其他 MySQL 进程正在运行。要检查这一点,请执行 以下:

                  • 从终端运行以下命令:

                    lsof -i:3306
                    

                    如果返回任何 PID,请使用 kill -9 PID 杀死它

                  • 转到System PreferencesMySQL → 检查是否有任何 MySQL 实例正在运行,停止它们。

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

                  sudo /usr/local/mysql/bin/mysqld_safe --skip-grant-tables
                  
                3. 每个用户的密码分别存储在 mysql.user 表中的 User 和 authentication_string 列下。我们可以将表格更新为:

                  UPDATE mysql.user SET authentication_string='your_password' where User='root'
                  

                【讨论】:

                  【解决方案14】:

                  MySQL 8 发生了很大变化。我发现MySQL 8.0 "How to Reset the Root Password" documentation 的以下修改适用于 Mac OS X。

                  使用 SQL 创建一个临时文件 $HOME/mysql.root.txt 以更新 root 密码:

                  ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '<new-password>';
                  

                  这使用mysql_native_password 来避免Authentication plugin 'caching_sha2_password' cannot be loaded 错误,如果我省略该选项,我会得到该错误。

                  停止服务器,以--init-file 选项开始设置root 密码,然后重新启动服务器:

                  mysql.server stop
                  mysql.server start --init-file=$HOME/mysql.root.txt
                  mysql.server stop
                  mysql.server start
                  

                  【讨论】:

                    【解决方案15】:

                    现有答案中提到的方法不适用于 MySQL 5.7.6 或更高版本。根据 MySQL 文档,这是推荐的方式。

                    B.5.3.2.3 重置 Root 密码:通用说明

                    MySQL 5.7.6 及更高版本:

                    mysql&gt; ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';

                    参考:https://dev.mysql.com/doc/refman/5.7/en/resetting-permissions.html

                    【讨论】:

                      【解决方案16】:

                      我认为这应该可行:

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

                      (请注意,如果不是 root,您可能应该将 root 替换为您的用户名。)

                      【讨论】:

                        【解决方案17】:

                        macOS v10.14 (Mojave) 及更高版本,从 Mac OS X DMG 安装程序安装 5.7.26。

                        尝试使用其他用户发布的 UPDATE 命令时,会出现以下错误:

                        ERROR 1820 (HY000):您必须在执行此语句之前使用 ALTER USER 语句重置密码。

                        复制安装程序提供给您的密码,打开终端,然后执行以下操作:

                        mysql -uroot -p
                        ALTER USER 'root'@'localhost' IDENTIFIED BY 'YOURPASSWORDHERE';
                        

                        【讨论】:

                          【解决方案18】:
                          mysqld_safe --skip-grant-tables
                          mysql -u root
                          UPDATE mysql.user SET authentication_string='yourpasswd' WHERE User='root';
                          FLUSH PRIVILEGES;
                          ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'yourpasswd';
                          

                          每次我的MacBook 重新启动时,我都需要这样做。

                          【讨论】:

                            【解决方案19】:

                            在终端中试试这个:

                            /usr/local/bin/mysql_secure_installation
                            

                            【讨论】:

                              【解决方案20】:

                              此解决方法适用于我的笔记本电脑!

                              macOS v10.14.5(莫哈韦沙漠)的 Mac。

                              MySQL 8.0.17 使用Homebrew 安装。

                              • 我运行以下命令来定位 MySQL 的路径

                                brew info mysql

                              • 一旦知道路径,我就运行这个:

                                /usr/local/Cellar/mysql/8.0.17/bin/mysqld_safe --skip-grant-table

                              • 在另一个终端我运行:

                                mysql -u root

                              • 在该终端中,我使用以下命令更改了 root 密码:

                                update mysql.user set authentication_string='NewPassword' where user='root';

                              • 然后我跑完:

                                FLUSH PRIVILEGES;

                              瞧,密码被重置了。

                              References

                              【讨论】:

                                【解决方案21】:

                                要引用 MySQL 8.0.15 + ,password() 函数不可用。使用下面的命令。

                                请使用

                                UPDATE mysql.user SET authentication_string='password' WHERE User='root';
                                

                                【讨论】:

                                  【解决方案22】:

                                  您可以在 Mac 上手动关闭 MySQL,方法是点击 Apple 菜单并打开 系统偏好设置。选择“MySQL”首选项面板,然后单击“停止 MySQL 服务器”按钮以停止 Mac 上的 MySQL 服务器。

                                  停止 MySQL 后,您需要按照以下步骤操作。

                                  • 您需要以 skip-grant-tables 模式启动 MySQL

                                    sudo /usr/local/mysql/support-files/mysql.server start --skip-grant-tables
                                    
                                  • 在您的终端中,输入此命令以刷新现有的权限

                                    /usr/local/mysql/bin/mysql mysql> FLUSH PRIVILEGES;
                                    
                                  • 现在您需要更改用户密码

                                    mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'newpassword';
                                    
                                    mysql> exit
                                    

                                  然后您可以转到 Apple 菜单并打开系统偏好设置。选择“MySQL”首选项面板,然后单击“停止 MySQL 服务器”按钮以停止 Mac 上的 MySQL 服务器。

                                  最后,您可以再次转到 Apple 菜单并打开系统偏好设置。选择“MySQL”首选项面板,然后单击“Start MySQL Server”按钮在 Mac 上启动 MySQL Server。

                                  【讨论】:

                                  • 太棒了!!它对我有很大帮助
                                  • 很高兴它帮助了你 Samiul :)
                                  【解决方案23】:

                                  以前的 cmets 都没有解决我 Mac 上的问题。

                                  我使用了下面的命令并且成功了。

                                  brew services stop mysql
                                  pkill mysqld
                                  rm -rf /usr/local/var/mysql/ # NOTE: this will delete your existing database!!!
                                  brew postinstall mysql
                                  brew services restart mysql
                                  mysql -u root
                                  

                                  【讨论】:

                                  • 我按照您的所有步骤操作,但收到以下错误 ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
                                  【解决方案24】:

                                  我通过以下方式解决了这个问题:

                                  1. 关闭我的 MySQL 服务器:mysql.server stop
                                  2. 在安全模式下运行 MySQL:mysqld_safe --skip-grant-tables
                                  3. 在另一个终端,使用mysql -u root登录
                                  4. 在同一终端中,运行UPDATE mysql.user SET authentication_string=null WHERE User='root';,然后运行FLUSH PRIVILEGES; ,然后使用exit; 退出
                                  5. mysql.server stop停止安全模式服务器,然后启动正常服务器; mysql.server start

                                  现在您可以设置新密码了

                                  ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'yourpasswd';
                                  

                                  【讨论】:

                                    猜你喜欢
                                    • 2018-01-21
                                    • 2015-07-10
                                    • 1970-01-01
                                    • 2016-03-01
                                    • 2019-09-21
                                    • 1970-01-01
                                    • 2017-07-05
                                    • 2015-10-26
                                    相关资源
                                    最近更新 更多