前天按照Oracle上的文档装了一遍mysql,选了最新8.0的版本,后来出现一些问题,网上搜答案,出来的基本仍是5.x版本的解决方案,并不适用8.0版本。而后我就去看了一下公司的正式环境买的阿里云rds版本,5.7。既然如此,从新装一下5.7保持和正式环境一致是必须的了。但,我忽然就有点好奇,为何当时没有装6.0 或者7.0版本,毕竟跨了2个大版本。更奇怪的是,看了一下mysql的官方文档的版本列表,发现也没有6.0 or 7.0的文档。html
这下就好玩了,为何没有6.x,7.x。mysql
网上搜了一下。linux
大意就是,6由于一些性能问题一会儿没起来。而后Oracle收购了Sun,中止的6的开发,而后7相关的功能统一合并到了8里面去。因此,8就成了最新的重要版本。sql
文档地址,注意是5.7版本。数据库
能够分为如下几步:centos
卸载以前的版本。yum erase mysql
安全
选y,完成服务器
完成以后检查一下 /etc/my.cnf
和/etc/mysql
若是仍是存在,须要手动删除。发现多了一个my.cnf.rpmsave
,rpm帮忙保存的,咱们这里也不须要,能够直接删除。tcp
libaio
是mysql的一个依赖项,能够先装一下(不过上次安装8.0的时候没有装,应该会自动装的)。 libnuma
是mysql中NUMA功能的一个依赖项,也一块儿先手动装一下算了。性能
yum install libaio yum install libnuma
经过地址根据本身的系统,选择本身须要的版本,我系统是centos7.5,因此选el7。 经过wget https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm
下载到服务器上,保存地址随意。虽然名字是mysql80,这个只是表示默认启用的是8.0版本,里面其实包含好几个版本,后面能够配置启用的具体版本。
sudo yum localinstall mysql80-community-release-el7-1.noarch.rpm
先安装rpm配置。
yum repolist enabled | grep "mysql.*-community.*"
看下是否已经添加成功。
出来的仍是8.0的版本,下面配置一下禁用8.0,启用5.7。
sudo yum install yum-utils # 安装下面的yum-config-manager sudo yum-config-manager --disable mysql80-community sudo yum-config-manager --enable mysql57-community
再看一下yum启用的版本状况. yum repolist enabled | grep "mysql.*-community.*"
而后就能够安装了。 sudo yum install mysql-community-server
,报了一个错。须要5.7版本的common,安装的确是8.0版本的common。
上面的问题应该有两种选择
--skip-broken
参数配置来解决先试一下第一种。yum erase mysql-community-common
删除完成。从新尝试安装。sudo yum install mysql-community-server
。没有报错,按y继续安装。done。
启动服务。centos7推荐使用systemctl start mysqld.service
。哈哈,失败了~~
若是是全新安装应该是不会有问题的,根据提示看下错误状况。
根据提示去搜一下缘由。搜了一下,是因为原先装过8.0,而后建立了数据致使的,这里直接删掉就能够了。而后启动服务,没有报错。
看一下服务状态sudo systemctl status mysqld.service
,running。
分为如下几个部分:
mysql 服务第一次启动,会自动作如下几件事情.
'root'@'localhost'
这个用户,密码存到/var/log/mysqld.log
中。查看一下密码。sudo grep 'temporary password' /var/log/mysqld.log
经过临时密码登陆,而后修改临时密码。mysql -u root -p
修改为功。用新密码登陆而后试试语句是否能够执行。没有问题。
登陆mysql而后建立一个用户用于远程登陆。CREATE USER 'root1'@'%' IDENTIFIED WITH mysql_native_password BY 'xxxxxxxxxx';
。%表示任意地址能够链接。xxx是具体的密码,要符合上面的密码规则。密码的验证方式是mysql_native_password。
下面分配权限.grant all privileges on *.* to 'root1'@'%'
把全部权限分配给root1用户。第一个星号表示数据库名。因此通常来讲能够先用root建立一个数据库,而后把这个库的全部权限分配给用户root1.分配了以后要刷新一下权限配置。FLUSH PRIVILEGES
建立好以后,mysql默认用的3306端口,因此要开启一下服务器的3306端口防火墙。firewall-cmd --zone=public --add-port=3306/tcp --permanent
,若是提示FirewallD is not running
表示防火墙服务器没有启动,能够按须要启用与否。而后须要从新加载一下防火墙配置。firewall-cmd --reload
本地端口启用以后,须要设置阿里云的安全组规则。
而后试试是否是能够远程连上,这里用dbeaver,跨平台,安利一下~
链接上试试查询,建表之类的操做,成功。