brew在mac os上安装mysql

nik*_*ola 328 mysql macos homebrew mysql-error-1045

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

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

/usr/local/Cellar/mysql/5.1.52/bin/mysqladmin -u root password 'mypass'
Run Code Online (Sandbox Code Playgroud)

我明白了:

/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
Run Code Online (Sandbox Code Playgroud)

但我也明白了

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

Lor*_*ers 662

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

使用brew的remove&cleanup命令,卸载launchctl脚本,然后删除mysql目录/usr/local/var,删除我现有的/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
Run Code Online (Sandbox Code Playgroud)

然后我从头开始:

  1. 用mysql安装 brew install mysql
  2. 运行brew建议的命令:(见下面注释)

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

  4. 使用备用安全脚本:

    /usr/local/Cellar/mysql/5.5.10/bin/mysql_secure_installation
    
    Run Code Online (Sandbox Code Playgroud)
  5. launchctl按照brew包脚本输出中的部分,如,

    #start
    launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
    
    #stop
    launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
    
    Run Code Online (Sandbox Code Playgroud)
  6. 繁荣.

希望有人帮助!

注意:--forcebrew cleanup也将清理过时的桶,认为这是一个新的自制功能.

请注意第二个:评论者说不需要第2步.我不想测试它,所以YMMV!

  • 很好的回答,谢谢!有一点需要补充:虽然在答案中提到它,但我错过了它并且因此失去了大约6个小时试图在Lion OSX上设置.如果您在重新安装之前拥有以前版本的MySql,请确保删除/ usr/local/var/mysql中的旧mysql目录.否则,您最初无法以root身份登录以设置密码,并且您将花费大量时间对计算机大喊大叫. (28认同)
  • 因为这个线程是旧的,所以上面的"launchctl unload"行现在是错误的.homebrew installs文件不再称为"com.mysql.mysqld.plist",它被称为"homebrew.mxcl.mysql.plist".该行现在应该是"launchctl unload -w~/Library/LaunchAgents/homebrew.mxcl.mysql.plist" (7认同)
  • 现在可以省略mysql_install_db,brew会在右侧directoy中自动创建服务器. (7认同)
  • 我有`~~ Library/LaunchAgents] $ ls com.adobe.ARM.202f4087f2bbde52e3ac2df389f53a4f123223c9cc56a8fd83a6f7ae.plist com.mysql.mysqld.plist com.facebook.videochat.ava.plist homebrew.mxcl.postgresql.plist`在`〜/ Library下/ LaunchAgents`但卸载它们给`launchctl:无法stat("com.mysql.mysqld.plist"):没有这样的文件或目录` (4认同)
  • 进入〜/ Library/LaunchAgents看看实际上调用了mysql的.plist文件 - 在我的情况下它是由homebrew安装的,所以你需要修改上面的卸载程序. (3认同)
  • 使用mysql_install_db:`[警告]不推荐使用mysql_install_db.请考虑切换到mysqld --initialize`. (3认同)

cor*_*ons 49

以下是结合从Mac上删除所​​有MySQL然后安装它的详细说明以上所述的Brew Way as Sedorner:

根据The Tech Lab完全删除MySQL

  • ps -ax | grep mysql
  • 停止和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*
  • 尝试运行sudo rm -rf /tmp/mysql*,它不应该工作

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

  • mysql 并修复任何错误
  • brew doctor
  • brew remove mysql
  • brew cleanup
  • brew update
  • brew install mysql
  • unset TMPDIR我是谁mysql_install_db --verbose --user=
  • --basedir="$(brew --prefix mysql)" --datadir=/usr/local/var/mysql --tmpdir=/tmp
  • 运行Brew建议的命令,添加MySQL,mysql.server start以便它在启动时自动启动

launchctl 现在应该按预期工作并一直运行

一帆风顺.

  • 在没有首先删除/tmp/mysql.sock的情况下完成上述所有操作我也感到很痛苦. (3认同)
  • 请注意,优胜美地及其他地区不存在 `/etc/hostconfig` (http://superuser.com/questions/850974/has-etc-hostconfig-actually-gone-away) (2认同)

Ali*_*lan 43

有同样的问题.似乎设置说明或正在创建的初始表有问题.这就是我在我的机器上运行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刚刚设置的新密码登录.


小智 22

自制

  1. 首先,确保你已经安装了自制软件
  2. 运行brew doctor并解决自制程序希望您修复的任何问题
  3. 跑步brew install mysql
  4. 跑步brew services restart mysql
  5. 跑步mysql.server start
  6. 跑步mysql_secure_installation


mru*_*cci 15

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

sudo rm -rf /usr/local/var/mysql
mysqld --initialize
Run Code Online (Sandbox Code Playgroud)

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

mysql.server start
echo "ALTER USER 'root'@'localhost' IDENTIFIED BY 'my-new-password';" | mysql -uroot --password=TEMPORARY_PASSWORD
Run Code Online (Sandbox Code Playgroud)

  • 我可以看到生成的临时密码,但是当我尝试运行mysql时,我得到:`ERROR !!服务器退出而不更新PID文件(/usr/local/var/mysql/XXXXX.local.pid)。当我执行mysql -u root时,密码不被接受。 (2认同)

Dar*_*ton 8

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

mysql -u root
Run Code Online (Sandbox Code Playgroud)

这应该让你进入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;
Run Code Online (Sandbox Code Playgroud)

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


Mar*_*ark 8

我刚才遇到了同样的问题.如果您brew info mysql按照步骤操作,new-password如果我没记错的话,看起来应该是root密码.我看到你看到的同样的事情.这篇文章对我帮助最大.

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


sud*_*ash 7

如果已经安装了mysql

完全停止mysql.

  1. mysql.server stop < - 可能需要根据您的版本进行编辑
  2. ps -ef | grep mysql < - 列出名称中包含mysql的进程
  3. kill [PID] < - 通过PID终止进程

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

  1. sudo find /. -name "*mysql*"
  2. 用你的判断,rm -rf这些文件.请注意,许多程序都有mysql驱动程序,您不想删除它们.例如,不要删除PHP安装目录中的内容.请删除自己的mysql目录中的内容.

安装

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

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

  1. sudo brew update
  2. sudo brew install cmake < - 对mysql的依赖,很有用
  3. sudo brew install openssl < - 对mysql的依赖,很有用
  4. sudo brew info mysql < - 浏览这个...它让你知道接下来会发生什么
  5. sudo brew install mysql --with-embedded; say done< - 使用嵌入式服务器安装mysql.告诉你什么时候完成(我的安装需要10分钟)

然后

  1. sudo chown -R mysql /usr/local/var/mysql/ < - mysql在我运行此命令之前不适用于我
  2. sudo mysql.server start < - 再一次,确切的语法可能会有所不同
  3. 在mysql中创建用户(http://dev.mysql.com/doc/refman/5.7/en/create-user.html).请记住为root用户添加密码.