在macOS下安装了MySQL服务作些测试,后来有段时间不用了,系统也升级过,最近几天发现MySQL的服务器已经没法启动了,在系统偏好设置的软件端提示这样一个告警:mysql
1 Warning:The /usr/local/mysql/data directory is not owned by the 'mysql' or '_mysql'。
因此怀疑多是目录权限的问题,首先查看MySQL都创建了哪些用户和组sql
1 # cat /etc/passwd | grep mysql 2 _mysql:*:74:74:MySQL Server:/var/empty:/usr/bin/false 3 # cat /etc/group | grep mysql 4 _mysql:*:74:
看起来是用户和组名字发生了变化,具体原来是什么名字不记得了,直接改服务器
1 # sudo chown -R _mysql /usr/local/mysql/data
另外要说的是,若是你的电脑开机了发现没有启动MySQL服务,首先应该去系统偏好设置里看看有没有勾选开机自动启动,若是须要开机自动启动,勾选上就行了。 若是不须要,那每次使用以前,记得启动服务。app
这里再顺便说一下MySQL的root密码忘记了该如何恢复的解决方法:
首先肯定系统的版本,好比个人系统是下面这样的测试
1 $ cat /System/Library/CoreServices/SystemVersion.plist 2 Mac OS X 10.12.1
肯定MySQL的版本加密
1 $ mysql --version 2 mysql Ver 14.14 Distrib 5.7.15, for osx10.11 (x86_64) using EditLine wrapper
切换到MySQL的安装目录下spa
1 $ cd /usr/local/mysql/bin 2 $ sudo ./mysqld_safe --skip-grant-tables &
登录无秘MySQL
$ mysql
而后修改密码,这里要注意,个人MySQL版本是5.7的,和以前的修改root密码的方法不一样,个人user表里,没有了Password 字段了,密码变成加密存储在 authentication_string 字段里加密存储。code
1 update mysql.user set authentication_string=password('newpass') where User='root'; 2 flush privileges;
若是是 MySQL 5.6 以前的版本blog
1 update mysql.user set Password=password('newpass') where User='root'; 2 flush privileges;
好了。从新启动MySQL服务器,密码已经修改了。ip