跳至主要內容

centos7安装mysql5.7,超详细,有图文

tanmantang原创大约 2 分钟开发工具mysql数据库

centos7 安装mysql5.7

提示

docker安装mysql,请跳转docker安装mysql5.7

卸载已安装的mysql数据库

检查系统中是否已安装 MySQL

rpm -qa | grep mysql

若没有输出,则未安装mysql

在CentOS7中,默认的数据库已更新为了Mariadb,而非 MySQL,所以执行 yum install mysql 命令只是更新Mariadb数据库,并不会安装 MySQL

查看已安装的 Mariadb 数据库版本

rpm -qa|grep -i mariadb

卸载已安装的 Mariadb 数据库

rpm -qa|grep mariadb|xargs rpm -e --nodeps

删除etc目录下的my.cnf

rm -f /etc/my.cnf

该文件一定要删除,不然在安装mysql的时候会出现一些各种牛鬼蛇神的问题

再次查看已安装的 Mariadb 数据库版本,确认是否卸载完成。

rpm -qa|grep -i mariadb

若没有输出,则卸载mariadb成功

开始安装

下载安装包

下载地址:https://dev.mysql.com/downloads/mysql/5.7.html

直链下载地址:https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.43-1.el7.x86_64.rpm-bundle.tar

查看下载链接截图

查看下载链接截图

下载完成后,将安装包上传至Linux服务器

创建mysql用户组

若使用root用户启动mysql的话,则不用该步骤

检查有无安装过mysql 用户组,没有的话创建

cat /etc/group | grep mysql
cat /etc/passwd |grep mysql

均无输出则无mysql用户

创建mysql 用户组和用户

groupadd mysql
useradd -r -g mysql mysql

安装步骤

解压压缩包

tar -xf mysql-5.7.43-1.el7.x86_64.rpm-bundle.tar

按照顺序安装rpm包

rpm -ivh mysql-community-common-5.7.43-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.43-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.43-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.43-1.el7.x86_64.rpm

提示

如果安装mysql-community-server 提示缺少perl,使用yum install perl 即可,中途安装提示缺少文件,按照要求使用yum 安装即可

启动mysql并设置开机自启

systemctl start mysqld
systemctl enable mysqld
systemctl status mysqld

配置mysql

获取初始密码

grep "password" /var/log/mysqld.log

相关信息

root@localhost: 之后的内容为你的mysql初始密码

修改初始密码

# 登录数据库
mysql -uroot -p
# 修改初始密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'GG&5Mhcbvvdv';

注意

若提示以下信息,说明你的密码过于简单,请输入复杂密码

ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

修改配置文件

vim /etc/my.cnf

根据需求修改保存以下内容

[client]
# 设置mysql客户端默认字符集
default-character-set=utf8
# 对其他远程连接的mysql客户端的配置
[mysql]
default-character-set=utf8

# 本地mysql服务的配置
[mysqld]
# 设置3306端口
port = 3306 
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
# 允许最大连接数
max_connections=200
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
#修改时区
default-time_zone='+8:00'
skip-name-resolve
#5.7高版本没有修改sql_mode会报ONLY_FULL_GROUP_BY错误
sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

重启mysql服务

# 重启服务
systemctl restart mysqld
# 查看状态
systemctl status mysqld

重新登录配置权限

提示

下方命令中 host 可设置为 localhost%localhost 仅本机可链接mysql,% 所有IP均可链接

# 创建用户
CREATE USER 'username'@'host'  IDENTIFIED BY 'password';

# 创建数据库,设置utf8格式
create database databasename default character set utf8 collate utf8mb4_unicode_ci;

# 分配数据库权限
GRANT ALL ON databasename.tablename TO 'username'@'host';

# 用以上命令授权的用户不能给其它用户授权,如果想让该用户可以授权,用以下命令:
GRANT privileges ON databasename.tablename TO 'username'@'host' WITH GRANT OPTION;

# 撤销用户权限
REVOKE privilege ON databasename.tablename FROM 'username'@'host';

# 修改用户密码
set password for 'username'@'localhost' = password('newpassword');

# 刷新权限
FLUSH PRIVILEGES;