centos通过yum安装mysql
前言
前天按照Oracle上的文档装了一遍mysql,选了最新8.0的版本,后来出现一些问题,网上搜答案,出来的基本还是5.x版本的解决方案,并不适用8.0版本。然后我就去看了一下公司的正式环境买的阿里云rds版本,5.7。既然如此,重新装一下5.7保持和正式环境一致是必须的了。但,我突然就有点好奇,为什么当时没有装6.0 或者7.0版本,毕竟跨了2个大版本。更奇怪的是,看了一下mysql的官方文档的版本列表,发现也没有6.0 or 7.0的文档。
这下就好玩了,为什么没有6.x,7.x。
网上搜了一下。
大意就是,6因为一些性能问题一下子没起来。然后Oracle收购了Sun,停止的6的开发,然后7相关的功能统一合并到了8里面去。所以,8就成了最新的重要版本。
言归正传
文档地址,注意是5.7版本。
安装部分
可以分为以下几步:
- 卸载之前的
- 安装新的
- 启动服务
卸载之前的版本。
yum erase mysql
选y,完成
完成之后检查一下
/etc/my.cnf
和/etc/mysql
如果还是存在,需要手动删除。发现多了一个my.cnf.rpmsave
,rpm帮忙保存的,我们这里也不需要,可以直接删除。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-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。上面的问题应该有两种选择
- 删除安装的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。
设置部分
分为以下几个部分:
- 设置root用户密码
- 创建用户,设置密码,分配权限。
- 配置远程连接。
mysql 服务第一次启动,会自动做以下几件事情.
- 启动服务。
- 在数据目录(/var/lib/mysql)生成ssl证书和秘钥文件
- 安装并启用validate_password插件。这个插件默认启用,他要求密码至少8位,并且要求有一个大写,一个小写,一个数字,以及一个特殊字符。
- 创建了
'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,跨平台,安利一下~
连接上试试查询,建表之类的操作,成功。
大功告成。
最新文章
- 一起学微软Power BI系列-官方文档-入门指南(5)探索数据奥秘
- CSS笔记之伪类与伪元素
- 为什么当多个inline-block的div中,如果有的div没有内容而有的div有内容,有内容的会下沉?
- shh(struts+spring+Hibernate)的搭建
- Struts
- Android Studio Exception汇总
- Spark源码系列(八)Spark Streaming实例分析
- C#常用函数--通用篇
- SQL 批量删除数据表
- asp.net,CSS设置<;TableListView>;的title居左,居左,居上
- 查看mysql库大小,表大小,索引大小
- erl0001-Erlang 设计原则 process port io
- ANDROID_MARS学习笔记_S01原始版_004_TableLayout
- [每日一题] 11gOCP 1z0-052 :2013-09-10 ABOUT ALERTS...............................................A50
- SQL执行效率总结
- sqlserver安全加固
- linux进程通信之共享内存
- java学习之路--I/O流
- EXCEL自动撤销合并单元格并填充相应内容(转帖)
- TensorFlow中数据读取之tfrecords
热门文章
- BZOJ_2242_[SDOI2011]计算器_快速幂+扩展GCD+BSGS
- Python-定时爬取指定城市天气(一)-发送给关心的微信好友
- asp.net core系列 55 IS4结合Identity密码保护API
- Celery异步调度框架(二)与Django结合使用
- 设计模式 | 简单工厂模式(static factory method)
- 模板方法模式 Template method 行为型 设计模式(二十六)
- HTML基础系列
- express+handlebars 快速搭建网站前后台
- Linux新加磁盘挂载和重启自动挂载
- 20180726 - Windows 10 Pro 下远程桌面连接提示“出现身份验证错误”