CentOS7.x使用yum安装MySQL数据库

  • CentOS7.x将默认数据库MySQL替换成了Mariadb,下面使用yum进行安装MySQL
  • 系统为:CentOS7.6.1810
  • 最终安装MySQL版本:5.7.29
一、卸载Mariadb
rpm -qa | grep mariadb | xargs rpm -e --nodeps

二、使用MySQL的官方repo源,安装MySQL
cd /usr/local/src # 下载MySQL的官方repo源 wget http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm # 安装Yum Repository rpm -ivh mysql57-community-release-el7-10.noarch.rpm # 查看可被安装的包 yum repolist enabled | grep mysql # 安装MySQL服务器 yum -y install mysql-community-server #使用该条命令! #yum -y install mysql-server mysql-devel

上面源无法下载时,也可以使用https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpmrepo源。
三、设置MySQL数据库密码 启动MySQL
systemctl start mysqld

查看MySQL状态
systemctl status mysqld

此时MySQL已经正常运行,需要找出root的密码
grep 'temporary password' /var/log/mysqld.log

如下图,其中初始密码为:hC0AP<6gwX%f,每个人安装好MySQL并且启动后的密码均不唯一,以你查看到的为准!(另外,必须以mysql -u root -p回车后输入此密码才行,如果嫌密码不好输入,直接复制粘贴过去也行。)
CentOS7.x使用yum安装MySQL数据库
文章图片
查找MySQL登陆密码
  1. 为防止新密码设置过于简单报错,可登陆MySQL之后第一时间进行以下操作
  • mysql> set global validate_password_policy=0;
  • mysql> set global validate_password_length=1;
  1. 如果使用复杂密码且符合规范,使用密码生成器生成,随机密码生成器,特殊符号中添加:!,@,#,$,%,^,&,*,密码长度为16。
# 登陆MySQL mysql -u root -p(回车后输入上面查到的密码) # 输入初始密码后,此时不能做任何事情,因为MySQL默认必须修改密码才能正常使用 ALTER USER 'root'@'localhost' IDENTIFIED BY 'new password';

修改完成后,退出重新登陆MySQL时,即可使用新密码!
四、设置字符集为utf8 && 设置时区 1、使用新的密码登陆MySQL查看字符集与时区
# 查看字符集 mysql> show variables like 'char%'; # 查看时区 mysql> show variables like '%time_zone%';

CentOS7.x使用yum安装MySQL数据库
文章图片
装完MySQL之后有两处字符集不为utf8 2、修改字符集、修改时区
vim /etc/my.cnf

在该文件最后一行添加character-set-server=utf8,如下

CentOS7.x使用yum安装MySQL数据库
文章图片
修改字符集为utf8
在该文件中的 [mysqld] 下面添加时区
# 东八区时区,北京时区 default-time-zone = '+8:00'

3、根据需要修改数据库表名大小写敏感
# 不区分大小写 lower_case_table_names=1

lower_case_table_names: 此参数不可以动态修改,必须重启数据库
lower_case_table_names=0 表名存储为给定的大小和比较是区分大小写的
lower_case_table_names=1 表名存储在磁盘是小写的,但是比较的时候是不区分大小写
lower_case_table_names=2 表名存储为给定的大小写但是比较的时候是小写的
# 查看当前数据库大小写是否区分 show variables like 'lower_case_table_names';

4、/etc/my.cnf配置文件示例
# 字符集设置 character_set_server=utf8 # 东八区时区,北京时区 default-time-zone = '+8:00'# 默认开启事件 event_scheduler=ON#自增长起始值 auto-increment-offset = 1 #自增长步长 auto-increment-increment = 2 #临时表大小 tmp_table_size = 64M # 不区分大小写 lower_case_table_names=1## 以下为配置主从设置 #数据库唯一ID,主从的标识号绝对不能重复。 server-id=1 #开启bin-log,并指定文件目录和文件名前缀 #log-bin=mysql-bin #需要同步liting数据库。如果是多个同步库,就以此格式另写几行即可。如果不指明对某个具体库同步,就去掉此行,表示同步所有库(除了ignore忽略的库)。 binlog-do-db=db1 binlog-do-db=db2 #不同步mysql系统数据库。如果是多个不同步库,就以此格式另写几行;也可以在一行,中间逗号隔开。 binlog-ignore-db=mysql #确保binlog日志写入后与硬盘同步 sync_binlog = 1 #跳过现有的采用checksum的事件,mysql5.6.5以后的版本中binlog_checksum=crc32,而低版本都是binlog_checksum=none binlog_checksum = none #bin-log日志文件格式,设置为MIXED可以防止主键重复。 binlog_format = mixed #二进制日志自动删除/过期的天数。默认值为 0,表示不自动删除。 expire_logs_days= 10 #如果当前的日志大小达到max_binlog_size,还会自动创建新的二进制日志 max_binlog_size= 100M #表示 slave 将复制事件写进自己的二进制日志 log_slave_updates= 1 #跳过主从复制中遇到的所有错误或指定类型的错误,避免 slave 端复制中断。 slave-skip-errors = all

5、重启数据库
systemctl restart mysqld

【CentOS7.x使用yum安装MySQL数据库】字符集修改完成后,重启MySQL,登陆MySQL查看下字符集,如下

CentOS7.x使用yum安装MySQL数据库
文章图片
修改完成后 五、移除MySQL的repo源
为了防止每次进行yum操作时其自动更新,移除MySQL的repo。
yum -y remove mysql57-community-release-el7-10.noarch

六、允许远程连接MySQL
查看当前用户权限:show grants;
1、更新root账号信息,允许任何主机以root账号登陆(推荐)
mysql> use mysql; mysql> select host,user from user; mysql> update user set host='%' where user='root';

2、任何主机以dev账号登陆
mysql> GRANT ALL PRIVILEGES ON *.* TO 'dev'@'%' IDENTIFIED BY 'new password' WITH GRANT OPTION;

3、指定主机以root账号登陆
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@’192.168.1.120’ IDENTIFIED BY 'new password' WITH GRANT OPTION;

4、新增用户并授权
# 创建用户 mysql> create user test@'%' identified by '123456'; # 授权 mysql> grant all privileges on test.* to test@'%';

5、进行以上任何操作,均需刷新权限
mysql> flush privileges;

七、MySQL自启
# 查看MySQL是否自启 systemctl is-enabled mysqld

如下如,为enabled时,MySQL为自启(安装MySQL之后,默认为自启,因此此步骤中不需要重复开启)
CentOS7.x使用yum安装MySQL数据库
文章图片
查看MySQL是否自启 八、防火墙放行3306端口
如果你的防火墙已经关闭,可忽略此操作。
# 永久开放3306端口 firewall-cmd --permanent --zone=public --add-port=3306/tcp # 重启防火墙 systemctl restart firewalld # 检测设定是否生效 iptables -L -n | grep 3306

九、MySQL5.25使用过程中出现的问题以及解决办法 9-1、在MySQL5.7.x的版本中,可能会出现[Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated c,问题。[1] 问题原因:可能使用了低版本Navicat刷脚本时遇到的问题
问题解决:
1、在my.cnf[mysqld]下添加sql_mode
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
如下图

CentOS7.x使用yum安装MySQL数据库
文章图片
添加sql_mode 2、修改完配置文件后,重启MySQL
systemctl restart mysqld
3、使用SQLyog刷脚本 文章参考
  • centos7下安装mysql(完整配置)
  • 修改MySQL的时区,涉及参数time_zone
  • 一次JDBC与MySQL因“CST”时区协商误解导致时间差了14或13小时的排错经历
  • CentOS7 yum 安装与配置MySQL5.7
字符集设置
  • 让MySql支持Emoji表情
  • 修改mysql数据库utf8编码为utf8mb4支持emoji表情存储
用户新建
  • mysql新建用户,修改权限
问题解决参考
  1. [Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated c ?

    推荐阅读