在Mac下安装MySQL
在Mac下安装MySQL
最近开始将开发工具都转移到 Mac 上了,其中也会莫名其妙的遇到一些坑,不如干脆将整个流程都记录下来,方便以后查找。
下载与安装
首先进入 MySQL 官网,选择免费的Community
版:MySQL Community Server
。MySQL 官网提供了tar.gz
和dmg
两种格式的安装包,接下来主要围绕使用dmg
安装来说。
下载后双击打开安装包,根据说明一步步确认即可完成安装。安装成功后打开系统偏好设置,在最下面可以找到 MySQL,通过它可以查看 MySQL 状态并启动和关闭 MySQL。
指定配置
使用该方式启动 MySQL 时是没有指定配置文件的,因此 MySQL 会按照以下顺序载入配置文件:
/etc/my.cnf
/etc/mysql/my.cnf
/usr/local/mysql/etc/my.cnf
~/.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"?> |
或是直接指定端口号连接:
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 |
修改完后使用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.cnf
和ulimit
中选择较小的一方作为真正的值。
然后 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"?> |
创建/Library/LaunchDaemons/limit.maxproc.plist
文件,添加以下内容:
<?xml version="1.0" encoding="UTF-8"?> |
然后重启电脑就会发现数值已经改变了,所有方式也都能正常连接,我把初始化线程数调回来以后发现第一个错误也不会出现了。
在Mac下安装MySQL的更多相关文章
- 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 ...
- 配置apache,及mac下安装mysql
先打开apache,在浏览器上输入 localhost 回车后会如果屏幕上显示:It works! 如下图: 这说明你的apache已开启 在window下配置apache: 1.找到apa ...
- mac 初次配置apache,及mac下安装mysql
先打开apache,在浏览器上输入 localhost 回车后会如果屏幕上显示:It works! 如下图: 这说明你的apache已开启 mac 下apache配置(mac自带apache ...
- Mac下安装MySQL 5.6.40
Mac下安装MySQL 5.6.40 - 干勾鱼的CSDN博客 - CSDN博客 原创 Mac下安装MySQL 5.6.40 2018-06-18 10:34:03 我是干勾鱼 阅读数 5927 ...
- Mac 下安装 MySQL 步骤
安装 MySQL Mac 下安装MySQL推荐去官网下载dmg 版本的,我使用的版本是5.7.30. 如上图所示. 之后就是傻瓜式一键狂点不过需要注意的是,不要关闭下图所示的框框!不要关闭下图所示的框 ...
- Mac下安装MySQL及启动等常用命令
总结了下mac下的mysql安装步骤: eclipse JavaEE 下载 JDK -9 macosx下载 一.安装及启动服务 1. MySQL Server 下载.(以mys ...
- Mac下安装Mysql以及修改Mysql密码
1.安装Mysql 安装有2种办法,一种是下载mysql安装文件,慢慢安装,另一种就是下载xmpp,里面自带mysql,就像是安装普通的mac软件一样,安装完毕,就有了mysql了. 方法一,官网下载 ...
- mac下安装mysql 1820 重置默认密码
mac安装mysql时会给出一个临时密码 记录下来 2018-03-17T02:14:10.809431Z 1 [Note] A temporary password is generated for ...
- mac 下安装 mysql (蛋疼)
mac先安装mydql步骤 1.首先从官网上下载 mac版本的mysql:我的是mysql-5.7.20-macos10.12-x86_64.dmg 2.正常安装: 3.在系统偏好设置的最底下.1:是 ...
随机推荐
- 「题解」:[AHOI2013]作业
问题: 作业 时间限制: 10 Sec 内存限制: 512 MB 题面 题目描述 此时己是凌晨两点,刚刚做了Codeforces的小A掏出了英语试卷.英语作业其实不算多,一个小时刚好可以做完.然后是 ...
- markdown常用知识点
为什么要用markdown写开发文档? 1.可以在git上在线预览,docx文档需要下载才能看见: 2. .md文档每次修改之后能被git管理,可追踪修改内容和修改人,但是docx不能追踪修改内容. ...
- Windows Server 2008 R2 部署服务
Windows Server 2008 R2 部署服务 部分参考: Windows Server 2008 R2 部署服务 - 马睿的技术博客 - 51CTO技术博客http://marui.blog ...
- maven 工程搭建
使用Maven建立一个Quite start 项目 2.命名卫 bhz-parent 3.groupid 为: bhz 4.artifactId 为: bhz-parent package:为空不填 ...
- Python中实现对list做减法操作介绍
Python中实现对list做减法操作介绍 这篇文章主要介绍了Python中实现对list做减法操作介绍,需要的朋友可以参考下 问题描述:假设我有这样两个list, 一个是list1,list1 = ...
- RvmTranslator7.2
1. RvmTranslator7.2 增加一个视图方块,方便视图切换; Download: https://github.com/eryar/RvmTranslator/releases/tag/7 ...
- google移动版针对智能手机、非智能手机的蜘蛛的User-agent
非智能手机蜘蛛的User-agent有以下两个 SAMSUNG-SGH-E250/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 UP.Browser/6.2. ...
- day69test
目录 前端 vue main.js vue CarTag.vue 小组件 vue Nav.vue小组件 vue Home.vue 页面 vue Car.vue 页面 vue CarDeta ...
- Python学习之enumerate
enumerate还可以接收第二个参数,用于指定索引起始值 2. 注意open返回文件对象,可迭代,而os.open返回的是文件指针,int类型, <wiz_tmp_tag ...
- 图像分割中的loss--处理数据极度不均衡的状况
序言: 对于小目标图像分割任务,一副图画中往往只有一两个目标,这样会加大网络训练难度,一般有三种方法解决: 1.选择合适的loss,对网络进行合理优化,关注较小的目标. 2.改变网络结构,使用atte ...