MacOS install mysql

前言

MacOS 安装mysql踩了不少坑,上一篇Python – pycurl, mysqlclient, Django中mysqlclient 在MacOS上颇费周折才install成功。结果安装mysql还踩了一些坑。

MacOS Install Mysql

如果是Mysql 官方下载直接下载dmg安装,具体没有操作,个人通过brew安装

# 误区一
brew install mysql

此方式默认安装最新的mysql 8,结果发现client远程连接服务连不上,远端是5.6版本,mysql 8是不向下兼容连接的,8只能用mysql-client8连接,反之也只能连mysql-server 8。

# 查看mysql相关的软件
brew search mysql
# 安装mysql5.7
brew install [email protected]
# 查看brew 安装的服务列表
brew services list
# 启动mysql5.7
brew services start [email protected]

注意 brew services 查看是有 Status 字段的,只有当Status为 started 绿色时表示正常启动了,本机安装后启动mysql5.7为 started实质是没有正常启动。

brew install mysql 5.7 启动异常

直接brew启动看不到mysql启动日志,找到mysql安装目录 /usr/local/Cellar/[email protected]/5.7.26/bin/

# 先停止之前 brew启动的
brew services stop [email protected]
#  手动启动mysql
mysql.service start
# 出现异常
./usr/local/Cellar/[email protected]/5.7.26/bin/mysqld_safe: line 144: /usr/local/var/mysql/MacBook-Pro.local.err: Permission denied
/usr/local/Cellar/[email protected]/5.7.26/bin/mysqld_safe: line 144: /usr/local/var/mysql/MacBook-Pro.local.err: Permission denied
/usr/local/Cellar/[email protected]/5.7.26/bin/mysqld_safe: line 198: /usr/local/var/mysql/MacBook-Pro.local.err: Permission denied
/usr/local/Cellar/[email protected]/5.7.26/bin/mysqld_safe: line 144: /usr/local/var/mysql/MacBook-Pro.local.err: Permission denied
 ERROR! The server quit without updating PID file (/usr/local/var/mysql/MacBook-Pro.local.pid).

Permission denied 是因为 /usr/local/var/mysql 目录用户分组权限问题

ll /usr/local/var
sudo chown -R _mysql /usr/local/var/mysql
sudo chmod -R o+rwx /usr/local/var/mysql

再次执行mysql.service start 上述 Permission denied 错误已不存在
ERROR! The server quit without updating PID file 错误个人机器是因为 brew install 时没有执行数据库初始化操作

执行完初始化后,再尝试启动,mysql server正常启动
mysqld --initialize
mysql.service start

mysql 丢失root密码

对于mysql丢失root密码,可以设置mysql的启动的配置文件,而后设置修改

# step 1 查看mysql启动所依赖的my.cnf文件
mysql --help|grep 'my.cnf'

# 返回结果
                      order of preference, my.cnf, $MYSQL_TCP_PORT,
/etc/my.cnf /etc/mysql/my.cnf /usr/local/etc/my.cnf ~/.my.cnf

先后顺序逐个check,个人本地用 /usr/local/etc/my.cnf

# step 2 在 [mysqld] 下添加 skip-grant-tables 关闭登陆校验
vim my.cnf

# step 3 重启mysql server
mysql.service restart

# 进入mysql
mysql -uroot -p

对于mysql 5.7,user表中已经没有password字段

> use mysql;
// 5.7以下版本执行 
> UPDATE user SET password=PASSWORD("your_new_pwd") WHERE user=’root’; 
// 5.7 版本执行
> UPDATE mysql.user set authentication_string=PASSWORD('your_new_pwd') where user='root' and Host = 'localhost';
> flush privileges;

// 5.7修改密码还可以
> SET password FOR 'root'@'localhost'=PASSWORD('your_new_pwd');
> ALTER user 'root'@'localhost' IDENTIFIED BY 'your_new_pwd';

Mysql connet ERROR 2002

mysql 连接时报错

mysql -uroot -p

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

省略 -h 参数时,mysql 默认 -h localhost 当mysql检测到时localhost时会尝试直接走本地socket连接
mysql server,如果想直接避免可以改用:

mysql -h127.0.0.1 -uroot -p

或者修改确定 mysql.sock 文件位置修改 my.cnf重启mysql server

MacOS 目录

此处参考了 关于macOS的目录和软件安装。
MacOS 属于一种类 Unix 系统,因此MacOS 目录 = Unix 系统通用目录 + 独有目录

Unix 通用目录
/bin 传统unix命令的存放目录,如ls,rm,mv等。
/sbin 传统unix管理类命令存放目录,如fdisk,ifconfig等等。
/usr 第三方程序安装目录。
/dev 设备文件存放目录,如何代表硬盘的/dev/disk0。
/usr/bin, /usr/sbin, /usr/lib,其中/usr/lib目录中存放了共享库(动态链接库).
/etc 标准unix系统配置文件存放目录,如用户密码文件/etc/passwd。此目录实际为指向/private/etc的链接。
/tmp 临时文件存放目录,其权限为所有人任意读写。此目录实际为指向/private/tmp的链接。
/var 存放经常变化的文件,如日志文件。此目录实际为指向/private/var的链接。

macOS独有目录
/Applications 应用程序目录,默认所有的GUI应用程序都安装在这里
/Library 系统的数据文件、帮助文件、文档等等
/Network 网络节点存放目录
/System 只包含一个名为Library的目录,这个子目录中存放了系统的绝大部分组件,如各种framework,以及内核模块,字体文件等等。
/Users 存放用户的个人资料和配置。每个用户有自己的单独目录。
/Volumes 文件系统挂载点存放目录。
/cores 内核转储文件存放目录。当一个进程崩溃时,如果系统允许则会产生转储文件。
/private 里面的子目录存放了/tmp, /var, /etc等链接目录的目标目录。

/usr/local和opt目录
/usr/local下一般是你安装软件的目录,这个目录就相当于在windows下的programefiles这个目录
/opt这个目录是一些大型软件的安装目录,或者是一些服务程序的安装目录

Homebrew装软件的原则是不破坏原来的系统自带软件或者稳定性,所以将所有装的软件全部放到了/usr/local/Cellar

你可能感兴趣的:(MySQL,运维)