繁体   English   中英

在 macOS 上 brew install mysql

[英]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 的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

然后我从头开始:

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

     unset TMPDIR mysql_install_db --verbose --user=`whoami` --basedir="$(brew --prefix mysql)" --datadir=/usr/local/var/mysql --tmpdir=/tmp
  3. mysql.server start命令启动mysql,就可以登录了

  4. 使用备用安全脚本:

     /usr/local/Cellar/mysql/5.5.10/bin/mysql_secure_installation
  5. 遵循 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 安装它:

根据技术实验室完全删除 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*
  • 尝试运行mysql ,它不应该工作

从这个StackOverflow答案中为每个用户 Sedorner Brew 安装 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。

  1. mysql.server stop <-- 可能需要根据您的版本进行编辑
  2. ps -ef | grep mysql 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 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用户添加密码。

酿造信息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 mysqlmysql.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 的授予权限命令

家酿

  1. 首先,确保您安装了自制软件
  2. 运行brew doctor并解决自制软件希望您修复的任何问题
  3. 运行brew install mysql
  4. 运行brew services restart mysql
  5. 运行mysql.server start
  6. 运行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:

MacOSX 自制 mysql 根密码

总之,尝试使用您的用户名登录! 不是根。

尝试使用与您的 MacOS 帐户用户名相同的名称,例如 johnsmit。

要以 root 身份登录,请发出:

mysql -u johnsmit

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM