首页 文章

brew在mac os上安装mysql

提问于
浏览
302

我正在尝试使用Homebrew by brew install mysql 5.1.52 在mac os 10.6上设置MySQL .

一切顺利,我也成功了 mysql_install_db .
但是当我尝试使用以下命令连接到服务器时:

/usr/local/Cellar/mysql/5.1.52/bin/mysqladmin -u root password 'mypass'

我明白了:

/usr/local/Cellar/mysql/5.1.52/bin/mysqladmin: connect to server at 'localhost' 
failed error: 'Access denied for user 'root'@'localhost' (using password: NO)'

我也尝试过访问 mysqladmin or mysql using -u root -proot
但无论是否有密码都无效 .

这是在全新机器上的全新安装,据我所知,必须可以在没有root密码的情况下访问新安装 . 我也尝试过:

/usr/local/Cellar/mysql/5.1.52/bin/mysql_secure_installation

但我也明白了

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

14 回答

  • 3

    如果brew安装了MySQL 5.7,则该过程与以前的版本略有不同 . 要重置root密码,请执行以下操作:

    sudo rm -rf /usr/local/var/mysql
    mysqld --initialize
    

    临时密码将打印到控制台,它只能用于更新root密码:

    mysql.server start
    echo "ALTER USER 'root'@'localhost' IDENTIFIED BY 'my-new-password';" | mysql -uroot --password=TEMPORARY_PASSWORD
    
  • 43

    我认为已经安装了旧版本的mysql,最终可能会处于这个位置 . 我遇到了同样的问题,上述解决方案都没有对我有用 . 我这样解决了:

    使用brew的 removecleanup 命令,卸载了 launchctl 脚本,然后删除了 /usr/local/var 中的mysql目录,删除了我现有的 /etc/my.cnf (请保留那个,如果它适用)和launchctl plist

    更新了plist的字符串 . 另请注意,您的备用安全脚本目录将基于您要安装的MySQL版本 .

    一步步:

    brew remove mysql
    
    brew cleanup
    
    launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
    
    rm ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
    
    sudo rm -rf /usr/local/var/mysql
    

    然后我从头开始:

    • brew install mysql 安装了mysql

    • 运行brew建议的命令:(见下面注释)

    unset TMPDIR
    
    mysql_install_db --verbose --user=`whoami` --basedir="$(brew --prefix mysql)" --datadir=/usr/local/var/mysql --tmpdir=/tmp
    
    • mysql.server start 命令启动mysql,以便能够登录它

    • 使用备用安全脚本:

    /usr/local/Cellar/mysql/5.5.10/bin/mysql_secure_installation
    
    • 跟随brew包脚本输出中的 launchctl 部分,例如,
    #start
    launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
    
    #stop
    launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
    
    • 轰隆 .

    希望有人帮助!

    Note: brew cleanup 上的 --force 位也将清理过时的小桶,认为这是一个新的自制功能 .

    Note the second: 评论者说第2步不是必需的 . 我不想测试它,所以YMMV!

  • 2

    这里有详细的说明,结合摆脱Mac上的所有MySQL,然后安装它作为Sedorner的Brew Way上面写道:

    根据技术实验室完全删除MySQL

    • ps -ax | grep mysql

    • stop和 kill 任何MySQL进程

    • sudo rm /usr/local/mysql

    • sudo rm -rf /usr/local/var/mysql

    • sudo rm -rf /usr/local/mysql*

    • sudo rm ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist

    • sudo rm -rf /Library/StartupItems/MySQLCOM

    • sudo rm -rf /Library/PreferencePanes/My*

    • launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist

    • 编辑 /etc/hostconfig 并删除行 MYSQLCOM=-YES-

    • rm -rf ~/Library/PreferencePanes/My*

    • sudo rm -rf /Library/Receipts/mysql*

    • sudo rm -rf /Library/Receipts/MySQL*

    • sudo rm -rf /private/var/db/receipts/*mysql*

    • 尝试运行 mysql ,它应该不起作用


    Brew从此StackOverflow答案中为每个用户Sedorner安装MySQL

    • brew doctor 并修正任何错误

    • brew remove mysql

    • brew cleanup

    • brew update

    • brew install mysql

    • unset TMPDIR

    • mysql_install_db --verbose --user= whoami --basedir="$(brew --prefix mysql)" --datadir=/usr/local/var/mysql --tmpdir=/tmp

    • mysql.server start

    • 运行Brew建议的命令,将MySQL添加到 launchctl ,以便它在启动时自动启动

    mysql 现在应该可以正常运行并按预期运行

    一帆风顺 .

  • 8

    有同样的问题 . 似乎设置说明或正在创建的初始表有问题 . 这就是我在我的机器上运行mysqld的方法 .

    如果mysqld服务器已在Mac上运行,请先停止它:

    launchctl unload -w ~/Library/LaunchAgents/com.mysql.mysqld.plist

    使用以下命令启动mysqld服务器,该命令允许任何人以完全权限登录 .

    mysqld_safe --skip-grant-tables

    然后运行 mysql -u root ,现在可以让您在没有密码的情况下成功登录 . 以下命令应重置所有root密码 .

    UPDATE mysql.user SET Password=PASSWORD('NewPassword') WHERE User='root'; FLUSH PRIVILEGES;

    现在,如果您终止mysqld_safe的运行副本并在没有skip-grant-tables选项的情况下再次启动它,您应该能够使用 mysql -u root -p 和您刚刚设置的新密码登录 .

  • 0

    好吧我有同样的问题并解决了它 . 出于某种原因,当使用Homebrew安装mysql时,mysql_secure_installation脚本无法正常工作,所以我手动完成了 . On the CLI enter

    mysql -u root
    

    这应该让你进入mysql . 现在执行以下操作(取自mysql_secure_installation):

    UPDATE mysql.user SET Password=PASSWORD('your_new_pass') WHERE User='root';
    DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1');
    DELETE FROM mysql.user WHERE User='';
    DELETE FROM mysql.db WHERE Db='test' OR Db='test\\_%'
    DROP DATABASE test;
    FLUSH PRIVILEGES;
    

    现在退出并返回到mysql: mysql -u root -p

  • 616

    我刚才遇到了同样的问题 . 如果你 brew info mysql 并按照步骤看起来根密码应该是 new-password 如果我没记错的话 . 我看到了你所看到的同样的事情 . This article对我帮助最大 .

    事实证明我没有为我创建任何帐户 . 当我在运行 mysqld_safe 后登录并且 select * from user; 没有返回任何行 . 我打开MySQLWorkbench并运行 mysqld_safe 并添加了一个 root 帐户,其中包含我预期的所有权限 . 这对我来说效果很好 .

  • 1

    如果已经安装了mysql

    完全停止mysql .

    • mysql.server stop < - 可能需要根据您的版本进行编辑

    • ps -ef | grep mysql < - 列出名称中包含mysql的进程

    • kill [PID] < - 通过PID终止进程

    删除文件 . 上面的说明很好 . 我要补充一下:

    • sudo find /. -name "*mysql*"

    • 用你的判断, rm -rf 这些文件 . 请注意,许多程序都有mysql驱动程序,您不想删除它们 . 例如,don 't delete stuff in a PHP install' s目录 . 在自己的mysql目录中删除东西 .

    安装

    希望你有自制软件 . 如果没有,请下载它 .

    我喜欢以root身份运行brew,但我不认为你必须这样做 . 编辑2018:您不能再以root身份运行brew

    • sudo brew update

    • sudo brew install cmake < - 对mysql的依赖,很有用

    • sudo brew install openssl < - 对mysql的依赖,很有用

    • sudo brew info mysql < - 浏览一遍......它让您了解接下来会发生什么

    • sudo brew install mysql --with-embedded; say done < - 使用嵌入式服务器安装mysql . 告诉你什么时候完成(我的安装花了10分钟)

    之后

    • sudo chown -R mysql /usr/local/var/mysql/ < - 在我运行此命令之前,mysql对我不起作用

    • sudo mysql.server start < - 再一次,确切的语法可能会有所不同

    • 在mysql中创建用户(http://dev.mysql.com/doc/refman/5.7/en/create-user.html) . 请记住为root用户添加密码 .

  • 0

    brew info mysql

    mysql: stable 5.6.12 (bottled)
    http://dev.mysql.com/doc/refman/5.6/en/
    Conflicts with: mariadb, mysql-cluster, percona-server
    /usr/local/Cellar/mysql/5.6.12 (9363 files, 353M) *
      Poured from bottle
    From: https://github.com/mxcl/homebrew/commits/master/Library/Formula/mysql.rb
    ==> Dependencies
    Build: cmake
    ==> Options
    --enable-debug
        Build with debug support
    --enable-local-infile
        Build with local infile loading support
    --enable-memcached
        Enable innodb-memcached support
    --universal
        Build a universal binary
    --with-archive-storage-engine
        Compile with the ARCHIVE storage engine enabled
    --with-blackhole-storage-engine
        Compile with the BLACKHOLE storage engine enabled
    --with-embedded
        Build the embedded server
    --with-libedit
        Compile with editline wrapper instead of readline
    --with-tests
        Build with unit tests
    ==> Caveats
    A "/etc/my.cnf" from another install may interfere with a Homebrew-built
    server starting up correctly.
    
    To connect:
        mysql -uroot
    
    To reload mysql after an upgrade:
        launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
        launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
    

    mysql.service启动

    . ERROR! The server quit without updating PID file (/var/run/mysqld/mysqld.pid).
    

    或者mysql -u root

    ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
    

    我正在寻找一段时间的解决方案,但我无法解决我的问题 . 我在stackoverflow.com上尝试了几个解决方案,但没有这个帮助我 .

  • 8

    TL;DR

    使用Brew安装后,MySQL服务器可能无法运行 . 如果您不希望MySQL作为后台服务运行,请尝试 brew services start mysql 或仅 mysql.server start .

    Full Story:

    我刚刚在运行Sierra的新MacBook Pro上安装了MySQL(稳定版)5.7.17,并且在运行_580634时也遇到了错误:

    Securing the MySQL server deployment.
    
    Enter password for user root: 
    Error: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
    

    说什么?

    根据Brew的安装信息, mysql_secure_installation 应该提示我......确保安装 . 我认为MySQL服务器可能没有正常运行 . 运行 brew services start mysql 然后 mysql_secure_installation 就像一个魅力 .

  • 0

    尝试给予Grant权限mysql命令

  • 42

    当使用brew与最新版本的mysql和yosemite时,上述答案(或我在其他地方看到的任何答案中的任何一个)都没有为我工作 . 我最终通过brew安装了一个不同的mysql版本 .

    通过说(例如)指定旧版本

    brew install mysql56
    

    为我工作 . 希望这有助于某人 . 这是一个令人沮丧的问题,我觉得我永远陷入困境 .

  • 6

    我尝试重新启动mysql后遇到了同样的问题 .

    为方便起见,我在.profile中使用了以下两个别名

    alias mysql-stop='launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist'
    alias mysql-start='launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist'
    

    在停止mysql然后尝试重新启动后,我遇到了你遇到的问题 . 我查看了launchctl加载,它报告了“没有发现加载”错误 .

    快速搜索后我发现了这个..

    http://www.daveoncode.com/2013/02/01/solve-mac-osx-launchctl-nothing-found-to-load-error/

    所以我更新了 mysql-start 别名,如下所示

    alias mysql-start='launchctl load -w -F ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist'
    

    这解决了我的问题,可能对您有用 .

  • 1

    Mysql的"Base-Path"存储在 /etc/my.cnf 中,当您进行brew升级时不会更新 . 只需打开它并更改basedir值即可

    例如,改变这个:

    [mysqld]
    basedir=/Users/3st/homebrew/Cellar/mysql/5.6.13
    

    指向新版本:

    [mysqld]
    basedir=/Users/3st/homebrew/Cellar/mysql/5.6.19
    

    用以下命令重启mysql:

    mysql.server start
    
  • 12

    这是MySQL 5.7的更新

    bash --version
    GNU bash, version 4.4.12(1)-release (x86_64-apple-darwin17.0.0)
    Copyright (C) 2016 Free Software Foundation, Inc.
    License GPLv3+: GNU GPL version 3 or later 
    
    This is free software; you are free to change and redistribute it.
    There is NO WARRANTY, to the extent permitted by law.
    
    #========================================
    brew --version
    Homebrew 1.7.6
    Homebrew/homebrew-core (git revision eeb08; last commit 2018-09-27)
    Homebrew/homebrew-cask (git revision c9f62; last commit 2018-09-27)
    
    #========================================
    mysql --version
    mysql  Ver 14.14 Distrib 5.7.23, for osx10.13 (x86_64) using  EditLine wrapper
    
    #========================================
    system_profiler SPSoftwareDataType
    Software:
    
        System Software Overview:
    
          System Version: macOS 10.13.3 (17D47)
          Kernel Version: Darwin 17.4.0
          Boot Volume: Macintosh HD
          Boot Mode: Normal
          Computer Name: EdisonMacHomeBj
          User Name: Edison (edison)
          Secure Virtual Memory: Enabled
          System Integrity Protection: Disabled
          Time since boot: 6 days 23:13
    
    brew remove mysql@5.7
    brew cleanup
    mv /usr/local/var/mysql /usr/local/var/mysql.bak
    brew install mysql@5.7
    rm -rf /usr/local/var/mysql
    
    #========================================
    mysqld --initialize
    2018-09-28T04:54:06.526061Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
    2018-09-28T04:54:06.542625Z 0 [Warning] Setting lower_case_table_names=2 because file system for /usr/local/var/mysql/ is case insensitive
    2018-09-28T04:54:07.096637Z 0 [Warning] InnoDB: New log files created, LSN=45790
    2018-09-28T04:54:07.132950Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
    2018-09-28T04:54:07.196824Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: 87cf2f10-c2da-11e8-ac2d-ba163df10130.
    2018-09-28T04:54:07.224871Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
    2018-09-28T04:54:07.366688Z 0 [Warning] CA certificate ca.pem is self signed.
    2018-09-28T04:54:07.457954Z 1 [Note] A temporary password is generated for root@localhost: kq3K=JR8;GqZ
    
    #========================================
    mysql_secure_installation -uroot -p"kq3K=JR8;GqZ"
    mysql_secure_installation: [Warning] Using a password on the command line interface can be insecure.
    
    Securing the MySQL server deployment.
    
    
    The existing password for the user account root has expired. Please set a new password.
    
    New password:
    
    Re-enter new password:
    
    VALIDATE PASSWORD PLUGIN can be used to test passwords
    and improve security. It checks the strength of password
    and allows the users to set only those passwords which are
    secure enough. Would you like to setup VALIDATE PASSWORD plugin?
    
    Press y|Y for Yes, any other key for No: n
    Using existing password for root.
    Change the password for root ? ((Press y|Y for Yes, any other key for No) : y
    
    New password:
    
    Re-enter new password:
    By default, a MySQL installation has an anonymous user,
    allowing anyone to log into MySQL without having to have
    a user account created for them. This is intended only for
    testing, and to make the installation go a bit smoother.
    You should remove them before moving into a production
    environment.
    
    Remove anonymous users? (Press y|Y for Yes, any other key for No) : y
    Success.
    
    
    Normally, root should only be allowed to connect from
    'localhost'. This ensures that someone cannot guess at
    the root password from the network.
    
    Disallow root login remotely? (Press y|Y for Yes, any other key for No) : n
    
     ... skipping.
    By default, MySQL comes with a database named 'test' that
    anyone can access. This is also intended only for testing,
    and should be removed before moving into a production
    environment.
    
    
    Remove test database and access to it? (Press y|Y for Yes, any other key for No) : n
    
     ... skipping.
    Reloading the privilege tables will ensure that all changes
    made so far will take effect immediately.
    
    Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y
    Success.
    
    All done!
    

相关问题