[置顶] Mac mysql5.7的各种问题

之前安装的是mysql 5.6,因为当时安装并没有各种配置,所以每次要使用数据库时,还需要自己手动打开mysqld。

后来使用homebrew重新安装mysql5.7

brew install mysql

很简单,整个过程不用管

配置环境变量:
在/Users/(用户名)/.bashprofile里面加一句

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

下面就是各种问题来了:

problem one mysql5.7开始会生成随机密码

最近安装mySQL5.7.9,发现安装完后会自动生成一个随机密码,然后用sql工具和mysql -uroot -p登录,发现都不能登录。

朋友给的解决方法:http://mazharahmed.me/reset-the-mysql-root-password-in-osx/,但是我发现还是得使用密码才能修改,所以继续寻找其他解决方法。

1.先关闭mysql服务;

2.进入终端,输入指令:cd /usr/local/mysql/bin/,进入安装目录;

3.输入指令:sudo su,切换到root用户;

4.输入指令:./mysqld_safe –skip-grant-tables &,禁止mysql验证功能。此时mysql服务会自动重启了;

5.用工具(比如Sequal Pro)登录mySQL。配置的时候,只配用户名为root,密码不配。 (这里我用的NaviCat For Mysql)

6.登录进去以后,数据库选择mysql,修改user表下用户名为root的那条记录,将password_expired设为N。这样随机密码就有效了,可以用密码登录了。(因为我的数据库user表里所有的password_expired都是N,所以我直接删把有密码的用户的密码删除掉,然后保存)

如果希望修改root密码,则在登录mysql后,执行下面两条sql即可:

update mysql.user set authentication_string=password(‘123456’) where user=’root’ and Host = ‘localhost’;
flush privileges;

[fromhttp://blog.csdn.net/jxplus/article/details/49796711

problem two Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’ (2)

用超级管理员的权限去修改/etc/mysql.cnf

把下面的内容加入到文件中

[client]
port = 3306
socket = /tmp/mysql.sock
default-character-set = utf8

[mysqld]
collation-server = utf8_unicode_ci
character-set-server = utf8
init-connect ='SET NAMES utf8'
max_allowed_packet = 64M
bind-address = 127.0.0.1
port = 3306
socket = /tmp/mysql.sock
innodb_file_per_table=1 

[mysqld_safe]
timezone = '+0:00'

(当时这样问题好像并没有完全解决,把problem3中的第4条加入到文件中,问题才解决了的)

problem three The server quit without updating PID file (/usr/local/var/mysql/***(macbook name).lan.pid).

(当使用命令 mysql.server start时出现)

1、可能是/usr/local/mysql/data/mysql.pid文件没有写的权限
解决方法 :给予权限,执行 “chown -R mysql:mysql /var/data” “chmod -R 755 /usr/local/mysql/data” 然后重新启动mysqld!

2、可能进程里已经存在mysql进程
解决方法:用命令“ps -ef|grep mysqld”查看是否有mysqld进程,如果有使用“kill -9 进程号”杀死,然后重新启动mysqld!

3、可能是第二次在机器上安装mysql,有残余数据影响了服务的启动。
解决方法:去mysql的数据目录/data看看,如果存在mysql-bin.index,就赶快把它删除掉吧,它就是罪魁祸首了。本人就是使用第三条方法解决的 !

4、mysql在启动时没有指定配置文件时会使用/etc/my.cnf配置文件,请打开这个文件查看在[mysqld]节下有没有指定数据目录(datadir)。
解决方法:请在[mysqld]下设置这一行:datadir = /usr/local/mysql/data

5、skip-federated字段问题
解决方法:检查一下/etc/my.cnf文件中有没有没被注释掉的skip-federated字段,如果有就立即注释掉吧。

6、错误日志目录不存在
解决方法:使用“chown” “chmod”命令赋予mysql所有者及权限

7、selinux惹的祸,如果是centos系统,默认会开启selinux
解决方法:关闭它,打开/etc/selinux/config,把SELINUX=enforcing改为SELINUX=disabled后存盘退出重启机器试试。

因为前3条我都没有执行成功,便试了试第4条,结果problem two 和three 都解决了。

折磨了我2天,终于搞定了!

problem four Table ‘performance_schema.session_variables’ doesn’t exist

run

mysql_upgrade -u root -p --force

then I restarted the DB server.
[from stackoverflow]

你可能感兴趣的:(mysql,mac,brew,mysql5-7)