Linux系统之安装MySQL5.7版本
一、MySQL介绍
1.1 MySQL简介
MySQL是一个开源的关系型数据库管理系统(RDBMS),由MySQL AB公司开发,现隶属于Oracle公司。它是全球最受欢迎的数据库系统之一,尤其在Web应用程序开发中占据主导地位。MySQL以其高性能、高可靠性和易用性著称,适用于从小型个人项目到大型企业级应用的各种规模的数据库需求。
1.2 MySQL特点
MySQL的主要特点包括:
- 开源免费:遵循GPL协议,用户可以自由地使用和修改源代码。
- 跨平台:支持Windows、Linux、Unix等多种操作系统。
- 性能高效:优化的SQL算法和多线程支持,能够有效利用系统资源。
- 稳定性与安全性:提供了多种安全特性,如访问控制、加密连接等,确保数据安全。
- 支持多种存储引擎:如InnoDB(事务安全)、MyISAM(高速查询)等,可根据应用场景选择。
- 丰富的数据类型:支持整数、浮点数、字符串、日期时间、二进制等多种数据类型。
- 强大的SQL支持:支持复杂的SQL查询,包括触发器、视图、存储过程等高级功能。
- 管理工具丰富:提供图形界面管理工具如phpMyAdmin,以及命令行工具mysqldump、mysqladmin等。
二、本地环境介绍
2.1 本地环境规划
本次实践为个人测试环境,操作系统版本为centos7.6。
hostname | 本地P地址 | 操作系统版本 | 内核版本 | MySQL版本 |
---|---|---|---|---|
jeven | 192.168.3.166 | centos 7.6 | 3.10.0-957.el7.x86_64 | 5.7 |
2.2 本次实践介绍
1.本次实践部署环境为个人测试环境,生产环境请谨慎;
2.在centos7.6环境下快速部署Mysql5.7数据库服务。
三、检查时间环境
3.1 检查系统版本
检查操作系统版本,当前操作系统版本为centos7.6。
[root@jeven ~]# cat /etc/os-release
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"
CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"
3.2 检查内核版本
检查内核版本,当前内核版本为
3.10.0-957.el7.x86_64
。
[root@jeven ~]# uname -r
3.10.0-957.el7.x86_64
3.3 检查MySQL安装情况
检查mysql数据库相关安装情况,可以使用以下命令。
[root@jeven ~]# rpm -qa | grep mysql
mysql-community-libs-5.7.44-1.el7.x86_64
mysql-community-client-5.7.44-1.el7.x86_64
mysql-community-common-5.7.44-1.el7.x86_64
mysql-community-libs-compat-5.7.44-1.el7.x86_64
3.3 卸载mariadb数据库
如果原服务器有mariadb数据安装痕迹,则需要清空环境。
- 卸载mariadb
yum remove mariadb* -y
rm -rf /etc/my.cnf
rm -rf /var/lib/mysql/
- 卸载Mysql数据库
yum remove mysql* -y
rm -rf /etc/my.cnf
rm -rf /var/lib/mysql/
rm -rf /var/log/mysqld.log
四、配置镜像源
4.1 配置yum仓库
执行以下命令,配置Mysql数据库的yum镜像源
yum localinstall https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
4.2 查看mysql-community.repo
在
/etc/yum.repos.d
目录,查看mysql-community.repo配置文件。
[root@jeven ~]# cd /etc/yum.repos.d/
[root@jeven yum.repos.d]# ls
CentOS-Base.repo epel.repo epel-testing.repo mysql-community.repo
[root@jeven yum.repos.d]# pwd
/etc/yum.repos.d
[root@jeven yum.repos.d]# cat mysql-community.repo
[mysql-connectors-community]
name=MySQL Connectors Community
baseurl=http://repo.mysql.com/yum/mysql-connectors-community/el/7/$basearch/
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
[mysql-tools-community]
name=MySQL Tools Community
baseurl=http://repo.mysql.com/yum/mysql-tools-community/el/7/$basearch/
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
# Enable to use MySQL 5.5
[mysql55-community]
name=MySQL 5.5 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.5-community/el/7/$basearch/
enabled=0
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
# Enable to use MySQL 5.6
[mysql56-community]
name=MySQL 5.6 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.6-community/el/7/$basearch/
enabled=0
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
[mysql57-community]
name=MySQL 5.7 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/7/$basearch/
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
[mysql80-community]
name=MySQL 8.0 Community Server
baseurl=http://repo.mysql.com/yum/mysql-8.0-community/el/7/$basearch/
enabled=0
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
[mysql-tools-preview]
name=MySQL Tools Preview
baseurl=http://repo.mysql.com/yum/mysql-tools-preview/el/7/$basearch/
enabled=0
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
[mysql-cluster-7.5-community]
name=MySQL Cluster 7.5 Community
baseurl=http://repo.mysql.com/yum/mysql-cluster-7.5-community/el/7/$basearch/
enabled=0
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
[mysql-cluster-7.6-community]
name=MySQL Cluster 7.6 Community
baseurl=http://repo.mysql.com/yum/mysql-cluster-7.6-community/el/7/$basearch/
enabled=0
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
4.3 检查yum仓库状态
执行以下命令,查看yum仓库状态。
yum repolist enabled
五、安装MySQL数据库
5.1 安装MySQL
执行以下命令,直接安装MySQL数据库。
yum install -y mysql-server
5.2 启动mysql服务
执行以下命令,启动启动mysql服务。
systemctl enable --now mysqld
5.3 查看mysql服务状态
检查mysql服务状态,确保mysql服务正常启动。
[root@jeven ~]# systemctl status mysqld
● mysqld.service - MySQL Server
Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
Active: active (running) since Sun 2024-05-26 22:40:07 CST; 27s ago
Docs: man:mysqld(8)
http://dev.mysql.com/doc/refman/en/using-systemd.html
Process: 53867 ExecStart=/usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid $MYSQLD_OPTS (code=exited, status=0/SUCCESS)
Process: 53813 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS)
Main PID: 53870 (mysqld)
Tasks: 27
Memory: 314.1M
CGroup: /system.slice/mysqld.service
└─53870 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid
May 26 22:40:03 jeven systemd[1]: Starting MySQL Server...
May 26 22:40:07 jeven systemd[1]: Started MySQL Server.
5.4 检查MySQL版本
执行以下命令,查看MySQL版本。
[root@jeven ~]# mysql -V
mysql Ver 14.14 Distrib 5.7.44, for Linux (x86_64) using EditLine wrapper
六、远程访问MySQL数据库
6.1 查找初始密码
MySQL 5.7安装后会自动生成一个随机的root密码,这个密码会记录在MySQL的日志文件中,通常位于/var/log/mysqld.log。你需要找到这条记录,形如A temporary password is generated for root@localhost:之后的内容就是初始密码。
grep password /var/log/mysqld.log
6.2 初始连接
执行以下命令,将以上得到的初始密码复制粘贴即可。
mysql -uroot -p
6.3 修改初始密码
执行以下命令,修改初始密码,自定义即可。
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Admin@123456';
6.4 修改密码策略
查看当前的密码策略
mysql> SHOW VARIABLES LIKE 'validate_password%';
+--------------------------------------+--------+
| Variable_name | Value |
+--------------------------------------+--------+
| validate_password_check_user_name | OFF |
| validate_password_dictionary_file | |
| validate_password_length | 8 |
| validate_password_mixed_case_count | 1 |
| validate_password_number_count | 1 |
| validate_password_policy | MEDIUM |
| validate_password_special_char_count | 1 |
+--------------------------------------+--------+
7 rows in set (0.00 sec)
mysql>
validate_password_policy变量控制密码策略的严格程度,取值范围为0-3(或使用LOW, MEDIUM, STRONG, DEFAULT作为等效字符串)。0表示不检查密码,3为最严格。
SET GLOBAL validate_password_policy = 0;
validate_password_policy有四个不同的取值:
- 0:禁用密码强度检查。
- 1:启用密码强度检查,密码必须包含至少一个数字、一个小写字母和一个大写字母。
- 2:启用密码强度检查,密码必须包含至少一个数字、一个小写字母、一个大写字母和一个特殊字符。
- 3:启用密码强度检查,密码必须包含至少一个数字、一个小写字母、一个大写字母、一个特殊字符和一个字母数字字符。
6.5 新建远程连接账号
执行以下命令,新建远程连接账号。
create user "admin"@"%" identified by "admin123";
grant all on *.* to admin with GRANT OPTION;
flush privileges;
6.6 客户端远程连接mysql
在其余Linux服务器的mysql客户端上连接Mysql服务
[root@server ~]# mysql -h 192.168.3.166 -uadmin -padmin123
Warning: Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 7
Server version: 5.7.44 MySQL Community Server (GPL)
Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>