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

  • CentOS7.x将默认数据库MySQL替换成了Mariadb,下面使用yum进行安装MySQL
  • 系统为:CentOS7.6.1810
  • 最终安装MySQL版本:5.7.25

一、卸载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
# 安装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、重启数据库
systemctl restart mysqld

字符集修改完成后,重启MySQL,登陆MySQL查看下字符集,如下

《CentOS7.x使用yum安装MySQL数据库》 修改完成后

五、移除MySQL的repo源

为了防止每次进行yum操作时其自动更新,移除MySQL的repo。

yum -y remove mysql57-community-release-el7-10.noarch

六、允许远程连接MySQL

1、更新root账号信息,允许任何主机以root账号登陆(推荐)
mysql> use mysql;
mysql> select host,user from user;
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new password';
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> 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刷脚本

文章参考

问题解决参考

  1. [Err] 1055 – Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated c

    原文作者:静美书斋
    原文地址: https://www.jianshu.com/p/2a7b08468722
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞