MySQL的各种大坑
在服务器的安装中,最容易出现的问题的就是数据库安装问题,一旦哪一步出现Error对于不了解数据库的人来讲,修复的成本是极其高的。本篇将把三个月里关于MySQL碰到的各种坑一一总结
数据库初始化完成了什么
mysql初始化主要完成了四个数据库的创建和数据写入
1 | | information_schema | |
其中对于操作者来说最重要的是mysql,里面存储着账号密码和权限等信息
5.7弃用的初始化命令
在MySQL的5.7版本更换了初始化函数,使用旧版的初始化函数最关键的一个问题是 无法直接得到默认密码 以下是旧版初始化的提示信息
1 | [root@localhost mysql-5.7.13]# bin/mysql_install_db --user=mysql --basedir=/usr/local/mysql-5.7.13/ --datadir=/usr/local/mysql-5.7.13/data |
默认密码在哪
如果使用了旧版的初始化命令,可以去目录
1 | cat /root/.mysql_secret |
下获得初始化密码
接入数据库的坑
如果按照教程(一)至(三)正确的配置,应该不会出现问题,但是在我自己摸索的过程中,因为使用旧版初始化命令,还遇到了以下问题,但是部分无法复现
Table权限不足
由于我使用不同版本的命令进行了多次初始化,不知道最后怎么搞得默认的库都不具备正确的权限,使用了以下指令解决
1 | grant all privileges on *.* to root@localhost identified by 'root'; |
user中host被改错
由于我乱改默认数据库mysql中的user表哥,导致对应root账号的host错误,始终无法接入数据库
1 | use mysql; |
如果想从本机(虚拟机Linux)以外的地址(实体机Mac上的数据库软件)接入数据库,也需要更改这里的host对应
1 | UPDATE user SET host='%' WHERE user.user='root';//允许任意值 |
不然仅能虚拟机自身的链接访问接入数据库
接入数据库的正确姿势
通过以上错误总结,完成正确的数据库链接,需要注意以下条件的齐备
- MySQL数据库正常运行
- 使用了正确的地址和账户密码
- 防火墙没有拦截请求
- 名为mysql的DATABASE中user表单host与user字段正确
- 登陆用户拥有正确的数据库权限
如果数据库因为各种问题出现了异常,一定要逐条检查以上五点