在Mac下安装MySQL

 

最近开始将开发工具都转移到 Mac 上了,其中也会莫名其妙的遇到一些坑,不如干脆将整个流程都记录下来,方便以后查找。

下载与安装

首先进入 MySQL 官网,选择免费的Community版:MySQL Community Server。MySQL 官网提供了tar.gzdmg两种格式的安装包,接下来主要围绕使用dmg安装来说。

下载后双击打开安装包,根据说明一步步确认即可完成安装。安装成功后打开系统偏好设置,在最下面可以找到 MySQL,通过它可以查看 MySQL 状态并启动和关闭 MySQL。

指定配置

使用该方式启动 MySQL 时是没有指定配置文件的,因此 MySQL 会按照以下顺序载入配置文件:

  1. /etc/my.cnf
  2. /etc/mysql/my.cnf
  3. /usr/local/mysql/etc/my.cnf
  4. ~/.my.cnf

    只需要创建其中一个文件并设定好配置即可。

mysql: command not found

安装后直接在命令行输入mysql会提示mysql: command not found,需要先将其添加到环境变量:

vim ~/.bash_profile

添加以下指令:

export PATH=${PATH}:/usr/local/mysql/bin

保存后立即使其生效:

source ~/.bash_profile

便可以使用 MySQL 的相关命令了。

配置用户

刚安装好的 MySQL 只有一个密码为空的root用户,首先需要给该用户设置一个密码:

mysqladmin -u root password 你的密码

然后使用设置好的密码登录 MySQl:

mysql -u root -p
输入刚才设置的密码

由于root用户只能用于本地登录,无法远程登录,所以还需要创建一个用于远程登录的用户:

GRANT ALL ON *.* TO 你的用户名 @'%' IDENTIFIED BY '你的密码' WITH GRANT OPTION;

这条语句的意思是创建一个用户,赋予它以任何方式访问,在任何数据库的所有操作权限,但是实际这里的任何访问方式其实不包括localhost,所以还需要单独设定:

GRANT ALL ON *.* TO 你的用户名 @localhost IDENTIFIED BY '你的密码' WITH GRANT OPTION;

与上一条语句一样,只是将任何访问方式改为了以localhost访问。

ERROR 2003 (HY000): Can’t connect to MySQL server on ‘127.0.0.1’ (61)

配置完远程登录的账户后,尝试使用该账户登录一下 MySQL:

mysql -h localhost -u 你的用户名 -p
输入密码

确实是可以登录成功的,可是如果使用 ip 登录:

mysql -h 127.0.0.1 -u 你的用户名 -p
输入密码

却会出现ERROR 2003 (HY000): Can't connect to MySQL server on '127.0.0.1' (61)的错误。原因是使用dmg安装的 MySQL 启动时的默认端口号不是3306而是3307,可以在这里修改:

sudo nano com.oracle.oss.mysql.mysqld.plist

--port的值改为3306即可:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key> <string>com.oracle.oss.mysql.mysqld</string>
<key>ProcessType</key> <string>Interactive</string>
<key>Disabled</key> <false/>
<key>RunAtLoad</key> <true/>
<key>KeepAlive</key> <true/>
<key>SessionCreate</key> <true/>
<key>LaunchOnlyOnce</key> <false/>
<key>UserName</key> <string>_mysql</string>
<key>GroupName</key> <string>_mysql</string>
<key>ExitTimeOut</key> <integer>600</integer>
<key>Program</key> <string>/usr/local/mysql/bin/mysqld</string>
<key>ProgramArguments</key>
<array>
<string>/usr/local/mysql/bin/mysqld</string>
<string>--user=_mysql</string>
<string>--basedir=/usr/local/mysql</string>
<string>--datadir=/usr/local/mysql/data</string>
<string>--plugin-dir=/usr/local/mysql/lib/plugin</string>
<string>--log-error=/usr/local/mysql/data/mysqld.local.err</string>
<string>--pid-file=/usr/local/mysql/data/mysqld.local.pid</string>
<string>--port=3307</string>
</array>
<key>WorkingDirectory</key> <string>/usr/local/mysql</string>
</dict>
</plist>

或是直接指定端口号连接:

mysql -h 127.0.0.1 -P 3307 -u 你的用户名 -p
输入密码

Communications link failure

Out of resources when opening file ‘…’

这两个都是 JDBC 连接 MySQL 时报的错,之所以放在一起说是因为改着改着莫名其妙两个都好了。

配好 MySQL 项目后运行了一个多数据源并使用数据库连接池的项目,一共有 32 个数据源,tomcat-jdbc 连接池每个数据源初始化 10 个连接,在创建一半数据源之后开始出现第一个错误:

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.

很多种情况都会导致这个错误,不过这里应该是数据库连接数不够,想到配置完后几乎没有编辑my.cnf文件,于是添加了这些属性:

max_connect_errors = 10000
max_connections=10000
max_user_connections=10000

修改完后使用show variables like 'max%';查看数据库属性,发现对应数值确实改变了,但是运行程序还是会出现一样的问题。

后来也 google 了很久,推测应该是系统配置导致的限制,但是也没找到问题具体出在哪里,只好先把初始化的线程数改小看看能不能正常运行,结果程序运行了一段时间后又出现另一个错误:

Out of resources when opening file './xxx.MYD' (Errcode: 24)

这个错误的原因就很显而易见了,肯定是 MySQL 打开的文件过多了,但是我明明记得在my.cnf中设置了open_files_limit,不可能出现这个错误啊。

结果使用show variables like 'open%';一看,配置竟然没生效,文件数只有可怜的 256,再三确认配置没有问题后认定原因肯定出在系统配置上。

首先使用ulimit -n查看系统的文件数限制,果然是 256,看来 MySQL 会在my.cnfulimit中选择较小的一方作为真正的值。

然后 google 一下 Mac 如何修改这个数值,一种方式是使用launchctl limit maxfiles 65535将文件数修改成 65535,尝试后发现确实系统的ulimit -n和 MySQL 的open_files_limit都变成了 65535。当时以为这样就解决了,结果又发现 JDBC 无法连接 MySQL 了,而 MySQL 客户端就能连上,真是匪夷所思。还好这个配置只要重启电脑就会失效,重启过后又能正常的连上 MySQL 了。

还有一种方法只能用在 Mac OS X Yosemite 上的,首先创建/Library/LaunchDaemons/limit.maxfiles.plist文件,添加以下内容:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>limit.maxfiles</string>
<key>ProgramArguments</key>
<array>
<string>launchctl</string>
<string>limit</string>
<string>maxfiles</string>
<string>65536</string>
<string>65536</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>ServiceIPC</key>
<false/>
</dict>
</plist>

创建/Library/LaunchDaemons/limit.maxproc.plist文件,添加以下内容:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple/DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>limit.maxproc</string>
<key>ProgramArguments</key>
<array>
<string>launchctl</string>
<string>limit</string>
<string>maxproc</string>
<string>2048</string>
<string>2048</string>
</array>
<key>RunAtLoad</key>
<true />
<key>ServiceIPC</key>
<false />
</dict>
</plist>

然后重启电脑就会发现数值已经改变了,所有方式也都能正常连接,我把初始化线程数调回来以后发现第一个错误也不会出现了。

在Mac下安装MySQL的更多相关文章

  1. Mac下安装Mysql出现 Can’t connect to local MySQL server through socket '/tmp/mysql.sock'

    在Mac下安装mysql出现 Can't connect to local MySQL server through socket '/tmp/mysql.sock' 错误,解决如下: $ unset ...

  2. 配置apache,及mac下安装mysql

    先打开apache,在浏览器上输入  localhost     回车后会如果屏幕上显示:It works! 如下图: 这说明你的apache已开启 在window下配置apache: 1.找到apa ...

  3. mac 初次配置apache,及mac下安装mysql

    先打开apache,在浏览器上输入  localhost     回车后会如果屏幕上显示:It works! 如下图: 这说明你的apache已开启 mac 下apache配置(mac自带apache ...

  4. Mac下安装MySQL 5.6.40

    Mac下安装MySQL 5.6.40 - 干勾鱼的CSDN博客 - CSDN博客   原创 Mac下安装MySQL 5.6.40 2018-06-18 10:34:03 我是干勾鱼 阅读数 5927 ...

  5. Mac 下安装 MySQL 步骤

    安装 MySQL Mac 下安装MySQL推荐去官网下载dmg 版本的,我使用的版本是5.7.30. 如上图所示. 之后就是傻瓜式一键狂点不过需要注意的是,不要关闭下图所示的框框!不要关闭下图所示的框 ...

  6. Mac下安装MySQL及启动等常用命令

    总结了下mac下的mysql安装步骤:   eclipse JavaEE 下载         JDK -9 macosx下载   一.安装及启动服务 1. MySQL Server 下载.(以mys ...

  7. Mac下安装Mysql以及修改Mysql密码

    1.安装Mysql 安装有2种办法,一种是下载mysql安装文件,慢慢安装,另一种就是下载xmpp,里面自带mysql,就像是安装普通的mac软件一样,安装完毕,就有了mysql了. 方法一,官网下载 ...

  8. mac下安装mysql 1820 重置默认密码

    mac安装mysql时会给出一个临时密码 记录下来 2018-03-17T02:14:10.809431Z 1 [Note] A temporary password is generated for ...

  9. mac 下安装 mysql (蛋疼)

    mac先安装mydql步骤 1.首先从官网上下载 mac版本的mysql:我的是mysql-5.7.20-macos10.12-x86_64.dmg 2.正常安装: 3.在系统偏好设置的最底下.1:是 ...

随机推荐

  1. python的meshgrid用法和3D库 mpl_toolkits.mplot3d 与PolynomialFeatures多项式库学习

    meshgrid import numpy as np from matplotlib import pyplot as plt from mpl_toolkits.mplot3d import Ax ...

  2. 使用movable-view制作可拖拽的微信小程序弹出层效果。

    仿了潮汐睡眠小程序的代码.[如果有侵权联系删除 最近做的项目有个弹出层效果,类似音乐播放器那种.按照普通的做了一般感觉交互不是很优雅,设计妹子把潮汐睡眠的弹层给我看了看,感觉做的挺好,于是乘着有空仿照 ...

  3. 菜鸟安装 CocoaPods

    在 iOS 项目开发中,经常会用到第三方的源代码,CocoaPods 就是为了方便管理这些源码的工具. 在官方教程里面,安装看起来非常简单 $ [sudo] gem install cocoapods ...

  4. ArduinoUno和Leonardo的区别

    学习过Arduino的同学对ArduinoUno和Lenardo的不同点会有所了解,但说起具体的区别估计还是很多人答不上来,今天我们就详细解释下Arduino Uno和Leonardo的不同. 我们从 ...

  5. [原创]新版PageOffice V4.0为什么用弹出窗口的方式打开文件?

    前的包含文档处理功能的Web办公系统,在打开文档的时候,一部分系统是采用Office文档嵌入到主窗口页面中右侧工作区域的方式,另一部分系统采用的是弹出新的浏览器窗口,里面完整的嵌入Office文件的打 ...

  6. if __name__=='__main__'使用场景,彻底明白

    本博中有一篇文章写了 if __name__=='__main__'的作用与原理http://www.cnblogs.com/fennudexiaoniao/p/7458324.html,但是好像似懂 ...

  7. centos部署jeecms

    首先下载安装包apache-tomcat-8.5.40.tar.gz jdk-8u211-linux-x641.rpm jeecmsv9.war 已经在WEB-INF/config/jdbc.prop ...

  8. MapReduce深入理解输入和输出格式(2)-输入和输出完全总结

    MapReduce太高深,性能也值得考虑,大家感兴趣的还是看看spark比较好. FileInputFormat类 FileInputFormat是所有使用文件为数据源的InputFormat实现的基 ...

  9. Odoo Documentation : Environment

    Environment The Environment stores various contextual data(上下文数据 ) used by the ORM: the database cur ...

  10. 【codeforces 499C】Crazy Town

    [题目链接]:http://codeforces.com/problemset/problem/499/C [题意] 一个平面,被n条直线分成若干个块; 你在其中的某一块,然后你想要要到的终点在另外一 ...