Mysql官方参考资料链接:A Quick Guide to Using the MySQL Yum Repository
环境:CentOS-6.8
Part1.安装
1.下载rpm包
wget https://dev.mysql.com/get/mysql80-community-release-el6-1.noarch.rpm
2.安装rpm包
rpm -Uvh mysql80-community-release-el6-1.noarch.rpm
3.查看可以安装的Mysql版本,默认下图中的5.7版本是disabled的,执行步骤4
yum repolist all | grep mysql
4.打开被禁的Mysql 5.7 Community Server安装源。
vi /etc/yum.repos.d/mysql-community.repo
Mysql5.7版本的enable修改为1(允许),其他不安装的版本修改为0(禁止),截稿时最新版本为8.0。修改结果下图:
5.再次执行步骤三,确认修改结果。
yum repolist all | grep mysql
6.配置yum允许安装mysql57
yum-config-manager --enable mysql57-community
7.查看yum允许安装的版本,验证是否允许mysql57
yum repolist enabled | grep mysql
8.执行安装命令,提示y/n时输入y,确定进行下载安装,网速看个人。至此安装完成。
//先卸载系统默认的mariaDB依赖
yum remove mysql-libs
//重新安装mysql依赖
yum install mysql-libs
//安装mysql
sudo yum install mysql-community-server
Part2.配置防火墙
0.查看防火墙状态,CenOS6系列使用iptables,7系列使用firewalld,命令不一致,都贴出来:
iptables防火墙使用:
service iptables status
firewalld使用:
systemctl status firewalld 或者 firewall-cmd --state
1.开放防火墙端口:
firewalld防火墙使用如下命令添加3306端口,--permanent参数代表永久规则。
firewall-cmd --zone=public --add-port=3306/tcp --permanent
重启firewalld防火墙使规则生效:
firewall-cmd --reload 或者 service firewalld restart
iptables防火墙可以用命令添加规则,此处贴出的方案是修改规则表。好处是直接复制生效的规则,妥当。避免网上搜出来的命令会因为版本问题,或者楼主的英文水平问题,造成命令错误的情况出现。如下就是复制的22规则,然后修改的端口:
vi /etc/sysconfig/iptables
重启iptables防火墙使规则生效,本来没启动也就启动了:
service iptables restart
Part3.初始化Mysql
1.启动服务
service mysqld start
2.查看初始化的默认密码,我装了多次,卸载不会卸载该日志,所以看时间确定密码是哪个。
grep 'temporary password' /var/log/mysqld.log
3.输入如下命令,按照提示输入默认密码进入mysql
mysql -uroot -p
4.修改mysql5.7密码安全策略,因为5.7对密码复杂的有要求,普通密码无法使用。但开发过程中搞那么长的密码很麻烦。如果不需要修改可以跳过此步骤:
set global validate_password_policy=0;
set global validate_password_length=4;
5.修改root用户本地登录的初始密码为root
ALTER USER 'root'@'localhost' IDENTIFIED BY 'root';
flush privileges;
6.mysql默认不允许root远程登陆,此处也不建议开启远程登陆root,所以再创建一个远程登陆的管理员账号ray,远程登陆密码为123123,并赋予所有库的所有权限:
create user 'ray'@'%' identified by '123123';
grant all privileges on *.* to 'ray'@'%';
flush privileges;
Part4.扩展:修改端口
1.修改mysql默认端口号为13306。打开my.cnf:
vi /etc/my.cnf
在[client]和[mysqld]下添加如下字段,没有[client]的话手动添加。
port=13306
2.保存退出,使用如下命令重启mysql服务使之生效:
service mysql restart
Part5.扩展:创建数据库指定字符集为(例:utf8mb4)和排序规则(例:utf8mb4_unicode_ci)
create database mydatabase default character set utf8mb4 collate utf8mb4_unicode_ci;
Part6.扩展:使用mysqldump在Mysql服务器之间备份数据库(表)
约定:主Mysql数据库=Master,Mysql备份数据库服务器(被写入备份数据的数据库)=Slave
说明:此处使用root账号演示,因为在Slave写入数据的时候,需要使用有管理员权限(SUPER privilege)的账户,此问题不在此帖讨论范围内。易见错误如:
[Err] 1227 - Access denied; you need (at least one of) the SUPER privilege(s) for this operation
类似问题参考链接可见阿里云的资料,链接:RDS MySQL权限问题(错误代码:1227,1725)
#登陆Master的mysql,输入一下命令执行传输。若在Slave执行,则调换命令中Master与Slave的位置。
mysqldump --host=Master:IP --port=Master:Port -uroot -proot --opt Master:DBName| mysql --host=Slave:IP --port=Slave:Port -uroot -proot -C Slave:DBName
Part7.附件yum安装Mysql-Community-Server-5.7.22默认my.cnf文件
# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html
[mysqld]
#
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
#
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
#
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid