[英]Unable to install mysql gem after MacOS 10.14 install and brew update
[英]brew install mysql on macOS
我正在尝试通过brew install mysql 5.1.52
使用 Homebrew 在 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
访问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)
我认为如果已经安装了旧版本的 mysql,最终可能会处于这个位置。 我遇到了同样的问题,上述解决方案都不适合我。 我是这样修复的:
使用 brew 的remove
和cleanup
命令,卸载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
运行 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
注意: brew cleanup
上的--force
位也将清理过时的小桶,认为这是一个新的自制功能。
请注意第二个:评论者说不需要第 2 步。 我不想测试它,所以YMMV!
以下是详细说明,结合从您的 Mac 中删除所有 MySQL,然后按照 Sedorner 上面写的 The Brew Way 安装它:
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*
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 # whoami is executed inline
mysql.server start
运行 Brew 建议的命令,将 MySQL 添加到launchctl
使其在启动时自动启动
mysql
现在应该可以正常工作并按预期一直运行
神速。
有同样的问题。 似乎设置说明或正在创建的初始表有问题。 这就是我如何在我的机器上运行 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
和您刚刚设置的新密码登录。
如果 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
好的,我遇到了同样的问题并解决了它。 出于某种原因,在使用 Homebrew 安装 mysql 时,mysql_secure_installation 脚本无法开箱即用,所以我手动完成了。 在 CLI 上输入:
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
我刚才遇到了同样的问题。 如果你brew info mysql
并按照步骤操作,如果我没记错的话,root 密码应该是new-password
。 我看到的和你看到的一样。 这篇文章对我帮助最大。
结果我没有为我创建任何帐户。 当我在运行mysqld_safe
后登录并select * from user;
没有返回任何行。 我在运行mysqld_safe
打开了 MySQLWorkbench,并添加了一个具有我期望的所有权限的root
帐户。 这现在对我来说效果很好。
完全停止mysql。
mysql.server stop
<-- 可能需要根据您的版本进行编辑ps -ef | grep mysql
ps -ef | grep mysql
<-- 列出名称中带有 mysql 的进程kill [PID]
<-- 通过 PID 杀死进程删除文件。 上面的说明很好。 我来补充:
sudo find /. -name "*mysql*"
rm -rf
这些文件。 请注意,许多程序都有您不想删除的 mysql 驱动程序。 例如,不要删除 PHP 安装目录中的内容。 删除它自己的 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
sudo brew install mysql --with-embedded; say done
<-- 使用嵌入式服务器安装 mysql。 完成时告诉您(我的安装花了 10 分钟)sudo chown -R mysql /usr/local/var/mysql/
<-- 在我运行此命令之前,mysql 对我不起作用sudo mysql.server start
<-- 再一次,确切的语法可能会有所不同酿造信息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 中尝试了几种解决方案,但这对我没有帮助。
TL; 博士
使用 Brew 安装后,MySQL 服务器可能无法运行。 如果您不希望 MySQL 作为后台服务运行,请尝试brew services start mysql
或mysql.server start
。
全文:
我刚刚在运行 Sierra 的新 MacBook Pro 上安装了 MySQL(稳定版)5.7.17,并且在运行mysql_secure_installation
时也出现错误:
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
就像一个魅力。
这是 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!
只是在以前的答案中添加一些内容 - 从 MySql 5.6 升级到 MySql 8.0 时,我按照此处提供的步骤进行了彻底卸载,但出现以下错误
2019-11-05T07:57:31.359304Z 0 [ERROR] [MY-000077] [Server] /usr/local/Cellar/mysql/8.0.18/bin/mysqld: Error while setting value 'ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' to 'sql_mode'.
2019-11-05T07:57:31.359330Z 0 [ERROR] [MY-013236] [Server] The designated data directory /usr/local/var/mysql is unusable. You can remove all files that the server added to it.
2019-11-05T07:57:31.359413Z 0 [ERROR] [MY-010119] [Server] Aborting
2019-11-05T07:57:31.359514Z 0 [Note] [MY-010120] [Server] Binlog end
我花了一些时间才弄明白。 在这里找到了一条线索: https : //discourse.brew.sh/t/clean-removal-of-mysql/2251
所以,我的问题的关键是卸载后删除 /usr/local/etc/my.cnf 文件。 在最后一步之后,MySql 终于开始工作了。
尝试重新启动 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'
这解决了我的问题,可能对您有用。
在将 brew 与最新版本的 mysql 和 yosemite 一起使用时,上述答案(或我在其他地方看到的数十个答案中的任何一个)都不适合我。 我最终通过 brew 安装了不同的 mysql 版本。
通过说(例如)来指定旧版本
brew install mysql56
为我工作。 希望这可以帮助某人。 这是一个令人沮丧的问题,我觉得我永远被困在了这个问题上。
尝试通过授予 mysql 的授予权限命令
家酿
brew doctor
并解决自制软件希望您修复的任何问题brew install mysql
brew services restart mysql
mysql.server start
mysql_secure_installation
Mysql 的“Base-Path”存储在/etc/my.cnf
,当您进行 brew upgrade 时不会更新。 只需打开它并更改 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
尝试我为 MariaDB 提供的解决方案,它也适用于 MySQL:
总之,尝试使用您的用户名登录! 不是根。
尝试使用与您的 MacOS 帐户用户名相同的名称,例如 johnsmit。
要以 root 身份登录,请发出:
mysql -u johnsmit
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.