概述
今天公司安排我做ECS上的自建数据库与RDS进行主从复制,给RDS数据库减轻压力做读写分离,前提就是RDS上数据库的版本要与ECS的自建数据库版本相同,Mysql5.7是真的坑爹,各种坑,记录一下,至于RDS怎么操作,这个到时候直接提工单就可以让他们售后帮你了!
准备工作
1 mysql-5.7.20-linux-glibc-2.12-x86_64.tar.gz
链接: https://pan.baidu.com/s/1KgW6k5pdR02J1PWPCGuLNQ 密码: uw6p
2 关闭防火墙,如果生产环境需要打开,则配置防火墙策略
3 关闭selinux
1 卸载系统自带的所有关于mysql或mariadb的软件包
#这两条执行都没有结果则可以安装,有结果的话,将结果卸载
[root@localhost ~]# rpm -qa | grep mysql
[root@localhost ~]# rpm -qa | grep mariadb
#以下两条为卸载命令
[root@localhost ~]# yum remove mysql*
[root@localhost ~]# yum remove mariadb*
2 将软件包上传至服务器的某个目录并解压
#进入到工作目录
[root@localhost ~]# cd /app
#上传命令
[root@localhost app]# rz
#解压文件至当前目录
z:表示tar包是被gzip模式压缩的,所以解压使用gunzip解压
x:从tar包中把文件提取出来
v:显示解压的详细过程
f:指定被处理的文件,一般都跟在参数后面
[root@localhost ~]# tar zxvf mysql-5.7.20-linux-glibc-2.12-x86_64.tar.gz
#将解压后的文件夹改名为mysql方便后续操作,也方便输入
[root@localhost ~]# mv mysql-5.7.20-linux-glibc-2.12-x86_64 mysql
3 初始化数据库并更改root密码
#进入改名后的mysql文件夹初始化
[root@localhost app]# cd Mysql
#创建mysql用户并设置为系统用户不可登陆(如果已经有了则可以忽略)
[root@localhost mysql]# useradd -r mysql -s /sbin/nologin
#执行初始化脚本,执行完毕后只要没有error提示的错误,其余都可以忽略
--user:指定初始化数据库的用户
--basedir:指定数据库的安装目录
--datadir:指定数据库数据的存放位置
[root@localhost mysql]# ./bin/mysql_install_db --user=mysql \
--basedir=/app/mysql
--datadir=/app/mysql/data
#进入mysql的启动脚本存放位置更改文件
[root@localhost mysql]#cd /app/mysql/support-files
#更改脚本内的basedir与datadir两个位置
[root@localhost support-files]# vim mysql.server
basedir=/app/mysql #将这两行添加为初始化时指定的内容
datadir=/app/mysql/data
:wq! #保存且推出vim编辑器
#更改mysql文件夹的属主与属组为mysql
-R:将父级目录配置的权限同时递归到自目录
[root@localhost support-files]#chown -R mysql:mysql /app/mysql
#回到mysql的bin目录下,执行后台启动mysql
[root@localhost support-files]# cd /app/mysql/bin
#以跳过密码的方式启动mysql
[root@localhost bin]# ./mysqld_safe --skip-grant-tables &
#进入数据库更改密码
[root@localhost bin]# ./mysql
#应用到mysql库,因为user表在mysql库中
mysql> use mysql;
#修改root用户密码,由于版本为5.7,password字段改为了authentication_string字段
mysql> UPDATE user SET authentication_string=password('testpassword') where user='root';
#刷新表生效
mysql> flush privileges;
#退出数据库
mysql> exit
#找到运行中的mysql进程
[root@localhost /app/mysql/bin]# ps aux | grep mysql
#将进程杀掉
[root@localhost /app/mysql/bin]# kill "Mysql PID号"
#进入mysql启动脚本目录下
[root@localhost /app/mysql/bin]# cd /app/mysql/support-files
#执行脚本正式启动Mysql
[root@localhost support-files]# ./mysql.server start
Starting MySQL. SUCCESS! #看到这个证明成功,不成功的查看一下mysql目录是否有权限
#再次登陆数据库,返回到bin目录下
[root@localhost /app/mysql/bin]# ./mysql -u root -p
Enter password: #此处输入刚才修改的root密码
#此处还需要继续修改密码,否则什么SQL都无法执行
mysql> SET PASSWORD=PASSWORD('newpassword');
mysql> UPDATE USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
mysql> flush privileges;
mysql> exit
4 配置数据库的my.cnf,Mysql5.7安装后没有自带的my.cnf需要自己配置
[root@localhost /app/mysql/bin]# vim /etc/my.cnf
[mysqld]
user=mysql
server_id = 1
port = 3307
basedir=/app/mysql
datadir=/app/mysql/data
socket=/tmp/mysql.sock
key_buffer_size=32M
max_allowed_packet=8M
[mysqldump]
quick
#将mysql的所有可执行文件加到环境变量中,可以在哪个位置都执行
[root@localhost /app/mysql/bin]# echo 'PATH=/app/mysql/bin:$PATH' > /etc/profile.d/mysql.sh
[root@localhost /app/mysql/bin]# source /etc/profile.d/mysql.sh
5 此时Mysql5.7.20就安装完毕了,此篇文章纯属想做一个记录,能帮到大家当然最好啦!谢谢!