这个属于个人类的笔记,不过希望能帮助到不爱看官网文档的你
最近dalao叫我弄数据库读写分离的准备工作,要求使用MySQL8.0
没在docker上使用由于本人根据官方文档把一些文件夹挂载到宿主环境
"-v /usr/local/docker/mysql/conf:/etc/mysql/conf.d -v /usr/local/docker/mysql/data:/var/lib/mysql "
但是在宿主环境中的/usr/local/docker/mysql/conf没有文件,目前不清楚怎么去配置my.cnf,所以暂时不使用docker配置了
本文也仅在Centos7进行
回归主题:
虚拟机系统:Centos 7
MySQL版本:mysql Ver 8.0.11 for Linux on x86_64
一、MySQL的安装
先下载mysql安装包
mkdir /usr/local/tmp 创建一个临时目录(记得顺便cd到这个目录)
wget https://repo.mysql.com//mysql80-community-release-el7-1.noarch.rpm
开始安装下载好的RPM包
sudo yum localinstall ./mysql80-community-release-el7-1.noarch.rpm
看看刚才安装的有没有问题
yum repolist enabled | grep "mysql.*-community.*"
result> mysql-connectors-community/x86_64 MySQL Connectors Community mysql-tools-community/x86_64 MySQL Tools Community mysql80-community/x86_64 MySQL 8.0 Community Server |
选择一个MySQL版本
引用官方文档部分内容:
使用MySQL Yum存储库时,默认选择最新的GA系列(当前为MySQL 5.7)进行安装。如果这是你想要的,你可以跳到下一步, 安装MySQL。 在MySQL Yum存储库中,不同版本的MySQL社区服务器系列托管在不同的子库中。最新的GA系列(目前MySQL 5.7)的子库是默认启用的,其他所有系列的子库(例如MySQL 8.0系列)默认是禁用的。使用此命令查看MySQL Yum存储库中的所有子存储库,并查看其中哪些被启用或禁用(对于启用了dnf的系统,用dnf替换该命令中的yum):
除了使用yum-config-manager或 dnf config-manager命令之外,您还可以通过手动编辑
找到要配置的子存储库的条目,然后编辑该
|
看到这里我们要--> 修改配置文件关闭MySQL5.7
vi /etc/yum.repos.d/mysql-community.repo
[mysql57-community] name=MySQL 5.7 Community Server baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/7/$basearch/ enabled=0 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql [mysql80-community] name=MySQL 8.0 Community Server baseurl=http://repo.mysql.com/yum/mysql-8.0-community/el/7/$basearch/ enabled=1 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql |
安装MySQL
sudo yum install mysql-community-server
运行MySQL服务
sudo service mysqld start
获取root密码
sudo grep 'temporary password' /var/log/mysqld.log
改个root密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'your password';
这个密码要求最少一个大写字母or小写字母,还有至少一个特殊符号
授权远程登录
mysql> create user 'root'@'%' IDENTIFIED BY 'root'; Query OK, 0 rows affected (0.08 sec) mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'; Query OK, 0 rows affected (0.10 sec) |
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
但是用这个会报错!
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IDENTIFIED BY "root"' at line 1
0.0 神奇的是我去搜索这个问题好像没人遇到,嘛...记录先
后面我在官网那些找 https://dev.mysql.com/doc/refman/8.0/en/show-grants.html
里面说了要先create账号,然后再授权给这个账号,但是不用再IDENTIFIED BY 'root' WITH GRANT OPTION
好了,启动navicat连接咯
Can not connect to MySQL Server 就出来了
这个问题和以前一样,百度有很多解决办法,这里不累述
这里你知道是由于3306端口没开放导致这个问题,百度“centos 开放3306”就能很快定位
虽然你拿navicat报的问题也能很快找到答案,但是答案不一定是你想要的,例如我给你的是在ubuntu怎么开放3306端口
开放了3306后还是会遇到 ERROR 2059
出现这个原因是
1.mysql8 之前的版本中加密规则是mysql_native_password,
2.mysql8之后,加密规则是caching_sha2_password,
解决问题方法有两种
1.一种是升级navicat驱动
2.一种是把mysql用户登录密码加密规则还原成mysql_native_password.
这里自行百度“mysql 2059”就有答案了,如果你是按照我这么写的注意'root'@'localhost'改成'root'@'%'