入职必会-开发环境搭建44-Linux软件安装-安装MySQL

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
云数据库 RDS PostgreSQL,高可用系列 2核4GB
简介: 在企业中MySQL 5.7和MySQL 8.x版本使用都较为广泛,因此本教程使用yum命令安装MySQL 5.7和MySQL 8.x到CentOS系统。MySQL 5.7和MySQL 8.x版本大部分安装过程相同,仅有少部分配置不同,因此放在一起说明,请注意MySQL 5.7和MySQL 8.x的不同之处。

安装MySQL

注意:安装MySQL需要root权限

在企业中MySQL 5.7和MySQL 8.x版本使用都较为广泛,因此本教程使用yum命令安装MySQL 5.7和MySQL 8.x到CentOS系统。

MySQL 5.7和MySQL 8.x版本大部分安装过程相同,仅有少部分配置不同,因此放在一起说明,请注意MySQL 5.7和MySQL 8.x的不同之处。

配置yum仓库

由于MySQL并不在CentOS的官方仓库中,所以进行两个操作,如下:

  1. 导入MySQL仓库的密钥
  2. 配置MySQL的yum仓库

注意:MySQL 5.7版本和MySQL 8.x版本操作不同

MySQL 5.7版本命令说明:

# 更新密钥
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
# 安装MySQL 5.7 yum库
rpm -Uvh http://repo.mysql.com//mysql57-community-release-el7-7.noarch.rpm

MySQL 5.7版本操作示例:

[root@cxypa ~]# rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
[root@cxypa ~]# rpm -Uvh http://repo.mysql.com//mysql57-community-release-el7-7.noarch.rpm
获取http://repo.mysql.com//mysql57-community-release-el7-7.noarch.rpm
警告:/var/tmp/rpm-tmp.z15a2i: 头V3 DSA/SHA1 Signature, 密钥 ID 5072e1f5: NOKEY
准备中...                          ################################# [100%]
正在升级/安装...
   1:mysql57-community-release-el7-7  ################################# [100%]
[root@cxypa ~]#

MySQL 8.x版本命令说明:

# 更新密钥
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
# 安装MySQL 8.x版本 yum库
rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-2.noarch.rpm

MySQL 8.x版本操作示例:

[root@cxypa ~]# rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
[root@cxypa ~]# rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-2.noarch.rpm
获取https://dev.mysql.com/get/mysql80-community-release-el7-2.noarch.rpm
警告:/var/tmp/rpm-tmp.TSu4K0: 头V3 DSA/SHA1 Signature, 密钥 ID 5072e1f5: NOKEY
准备中...                          ################################# [100%]
正在升级/安装...
   1:mysql80-community-release-el7-2  ################################# [100%]
[root@cxypa ~]#

使用yum安装MySQL

命令说明:

# yum安装MySQL
yum -y install mysql-community-server

操作示例:

[root@cxypa ~]# yum -y install mysql-community-server
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: ftp.sjtu.edu.cn
 * extras: ftp.sjtu.edu.cn
 * updates: ftp.sjtu.edu.cn
# 省略其他
总下载量:213 M
Downloading packages:
Delta RPMs disabled because /usr/bin/applydeltarpm not installed.
(1/6): mysql-community-common-5.7.40-1.el7.x86_64.rpm                                | 311 kB  00:00:00     
(2/6): mysql-community-libs-5.7.40-1.el7.x86_64.rpm                                  | 2.6 MB  00:00:00     
(3/6): mysql-community-libs-compat-5.7.40-1.el7.x86_64.rpm                           | 1.2 MB  00:00:00     
(4/6): mysql-community-client-5.7.40-1.el7.x86_64.rpm                                |  28 MB  00:00:01     
(5/6): postfix-2.10.1-9.el7.x86_64.rpm                                               | 2.4 MB  00:00:00     
(6/6): mysql-community-server-5.7.40-1.el7.x86_64.rpm                                | 178 MB  00:00:07     
--------------------------------------------------------------------------------------
总计                                                                                 24 MB/s | 213 MB 
Running transaction
警告:RPM 数据库已被非 yum 程序修改。
  正在安装    : mysql-community-common-5.7.40-1.el7.x86_64                                      1/8 
  正在安装    : mysql-community-libs-5.7.40-1.el7.x86_64                                        2/8 
  正在安装    : mysql-community-client-5.7.40-1.el7.x86_64                                      3/8 
已安装:
  mysql-community-libs.x86_64 0:5.7.40-1.el7             mysql-community-libs-compat.x86_64 0:5.7.40-1.el7     mysql-community-server.x86_64 0:5.7.40-1.el7            
作为依赖被安装:
  mysql-community-client.x86_64 0:5.7.40-1.el7           mysql-community-common.x86_64 0:5.7.40-1.el7       
作为依赖被升级:
  postfix.x86_64 2:2.10.1-9.el7
替代:
  mariadb-libs.x86_64 1:5.5.60-1.el7_5                                                                       
完毕!
[root@cxypa ~]#

到此完成了MySQL的安装,接下来需要启动MySQL并配置开机自启动等一系列MySQL软件自身的配置。

启动MySQL

安装好MySQL后,MySQL会自动配置一个名为mysqld的服务,需要手动启动这个服务。

命令说明:

systemctl start mysqld    # 启动MySQL服务
systemctl status mysqld   # 查看服务状态

操作示例:

[root@cxypa ~]# systemctl start mysqld
[root@cxypa ~]# systemctl status mysqld
● mysqld.service - MySQL Server
   Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
   Active: active (running) since 六 2022-12-24 13:51:14 CST; 24s ago
     Docs: man:mysqld(8)
           http://dev.mysql.com/doc/refman/en/using-systemd.html
  Process: 21026 ExecStart=/usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid $MYSQLD_OPTS (code=exited, status=0/SUCCESS)
  Process: 20911 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS)
 Main PID: 21029 (mysqld)
   CGroup: /system.slice/mysqld.service
           └─21029 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid
12月 24 13:51:10 cxypa systemd[1]: Starting MySQL Server...
12月 24 13:51:14 cxypa systemd[1]: Started MySQL Server.
[root@cxypa ~]#

配置MySQL开机自启动

默认情况需要我们每次开机手动启动MySQL服务,这样操作比较麻烦,给MySQL配置开机自动启动服务。

命令说明:

systemctl enable mysqld   # 开机自动启动MySQL服务

操作示例:

[root@cxypa ~]# systemctl enable mysqld
[root@cxypa ~]#

没有显示任何错误,说明设置开机自动启动MySQL服务成功。

获取MySQL的初始密码

MySQL首次安装后会把初始的随机密码保存在/var/log/mysqld.log文件中。我们需要去这个文件中得到默认密码登录MySQL数据库。

命令说明:

# 使用grep命令在/var/log/mysqld.log文件中找到初始密码
grep 'temporary password' /var/log/mysqld.log

操作示例:

[root@cxypa ~]# grep 'temporary password' /var/log/mysqld.log
2022-12-24T05:51:11.620251Z 1 [Note] A temporary password is generated for root@localhost: eN(2DN4%tbwd
[root@cxypa ~]#

效果说明:

root@localhost:后面的内容就是初始密码,说明默认密码为eN(2DN4%tbwd

登陆MySQL数据库系统

通过mysql -uroot -p密码就可以登录MySQL数据库了。

命令说明:

mysql -uroot -p密码
# -u:表示登陆的用户,MySQL数据库的管理员用户默认是root
# -p:表示使用密码登陆

操作示例:

[root@cxypa ~]# mysql -uroot -p
Enter password: #把密码复制到这里
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.40
Copyright (c) 2000, 2022, Oracle and/or its affiliates.
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>

效果说明:

看到mysql>就说明登录MySQL成功了!

修改root用户密码

注意:MySQL 5.7版本和MySQL 8.x版本操作不同

MySQL 5.7版本命令说明:

# 在MySQL控制台内执行
ALTER USER 'root'@'localhost' IDENTIFIED BY '密码';
# MySQL5.7对密码的强度要求比较高,需要包含大写字母和特殊符号长度8位以上,使用简单的密码会出错。

MySQL 5.7版本操作示例:

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'CXYhao123$';
Query OK, 0 rows affected (0.00 sec)
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'root';
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
mysql>

MySQL 8.x版本命令说明:

# 在MySQL控制台内执行
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '密码';
# MySQL8.x对密码的强度要求比较高,需要包含大写字母和特殊符号长度8位以上,使用简单的密码会出错。

MySQL 8.x版本操作示例:

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'CXYhao123$';
Query OK, 0 rows affected (0.00 sec)
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

配置root允许简单密码

为了学习方便我们可以需要给root设置简单密码如root

注意:MySQL 5.7版本和MySQL 8.x版本操作不同

MySQL 5.7版本安装命令说明:

set global validate_password_policy=LOW; # 设置密码安全级别为低
set global validate_password_length=4;   # 设置密码长度最低4位

MySQL 5.7版本安装操作示例:

mysql> set global validate_password_policy=LOW;
Query OK, 0 rows affected (0.00 sec)
mysql> set global validate_password_length=4;
Query OK, 0 rows affected (0.01 sec)
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'root';
Query OK, 0 rows affected (0.00 sec)
mysql> exit
Bye
[root@cxypa ~]# mysql -uroot -proot
mysql: [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 3
Server version: 5.7.40 MySQL Community Server (GPL)
Copyright (c) 2000, 2022, Oracle and/or its affiliates.
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>

效果说明:

上面设置密码安全级别为低和设置密码长度最低4位,把MySQL的密码设置为root,并退出MySQL,使用修改后的root密码登录。

MySQL 8.x版本命令说明:

set global validate_password.policy=0; # 设置密码安全级别为低
set global validate_password.length=4;   # 设置密码长度最低4位
set global validate_password.check_user_name=0;   # 设置允许账号密码相同

MySQL 8.x版本操作示例:

mysql> set global validate_password.policy=0;
Query OK, 0 rows affected (0.01 sec)
mysql> set global validate_password.length=4;
Query OK, 0 rows affected (0.00 sec)
mysql>  set global validate_password.check_user_name=0;
Query OK, 0 rows affected (0.00 sec)
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';
Query OK, 0 rows affected (0.00 sec)
mysql>

效果说明:

上面设置密码安全级别为低和设置密码长度最低4位,把MySQL的密码设置为root,并退出MySQL,使用修改后的root密码登录。

查看密码安全

命令说明:

show variables Like 'validate_password.%';

操作示例:

mysql> Show Variables Like 'validate_password.%';
+--------------------------------------+-------+
| Variable_name                        | Value |
+--------------------------------------+-------+
| validate_password.check_user_name    | ON    |
| validate_password.dictionary_file    |       |
| validate_password.length             | 4     |
| validate_password.mixed_case_count   | 1     |
| validate_password.number_count       | 1     |
| validate_password.policy             | LOW   |
| validate_password.special_char_count | 1     |
+--------------------------------------+-------+
7 rows in set (0.01 sec)

效果说明:

  • validate_password.length:需要密码最小字符数,默认为8
  • validate_password.number_count:需要密码的最小数字字符数,默认为1
  • validate_password.mixed_case_count:需要密码的小写和大写的最小字符数,默认为1
  • validate_password.special_char_count:需要密码的特殊字符的最小字符数,默认为1
  • validate_password.dictionary_file:用于检查密码的字典文件的路径名,默认没有

配置root远程登录

MySQL默认提供的root账号只能进行本地登录,也就是使用root账户只能在安装MySQL的系统上才能登录。如果要从其他电脑登录MySQL需要配置root账户允许远程登录。

注意:MySQL 5.7版本和MySQL 8.x版本操作不同

MySQL 5.7版本安装命令说明:

grant all privileges on *.* to root@"IP地址" identified by '密码' with grant option;  # 授权root远程登录
# IP地址即允许用户登陆的主机IP地址,也可以填写%,表示允许任何主机远程登录
# 密码表示给远程登录独立设置密码,可以和本地登陆的密码不同
flush privileges; # 刷新权限

MySQL 5.7版本安装操作示例:

mysql> grant all privileges on *.* to root@"%" identified by 'root' with grant option;
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

MySQL 8.x版本命令说明:

# 第一次设置root远程登录并配置远程密码
create user 'root'@'%' IDENTIFIED WITH mysql_native_password BY '密码';
# 后续修改密码使用如下SQL命令
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '密码';

MySQL 8.x版本操作示例:

mysql> create user 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';
Query OK, 0 rows affected (0.00 sec)
mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';
Query OK, 0 rows affected (0.01 sec)

配置防火墙允许远程访问3306端口

由于CentOS7默认开启了防火墙,远程连接被拦截了,需要打开3306的端口号,才能进行MySQL远程连接。

命令说明:

# 显示现有的规则
firewall-cmd --list-all
# 开放的端口永久保存到防火墙
firewall-cmd --zone=public --add-port=3306/tcp --permanent
# 重启防火墙
systemctl restart firewalld

操作示例:

[root@cxypa ~]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens33
  sources: 
  services: ssh dhcpv6-client
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 
        
[root@cxypa ~]# firewall-cmd --zone=public --add-port=3306/tcp --permanent
success
[root@cxypa ~]# systemctl restart firewalld
[root@cxypa ~]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens33
  sources: 
  services: ssh dhcpv6-client
  ports: 3306/tcp
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 
        
[root@cxypa ~]#

卸载MySQL5.7

  1. 停止MySQL服务
systemctl stop mysqld


  1. 查看MySQL安装了哪些东西
rpm -qa | grep -i mysql

操作示例:

[root@cxypa ~]# rpm -qa |grep -i mysql
mysql-community-client-5.7.40-1.el7.x86_64
mysql57-community-release-el7-7.noarch
mysql-community-libs-5.7.40-1.el7.x86_64
mysql-community-libs-compat-5.7.40-1.el7.x86_64
mysql-community-server-5.7.40-1.el7.x86_64
mysql-community-common-5.7.40-1.el7.x86_64
[root@cxypa ~]#


  1. 开始卸载

操作示例:

[root@cxypa ~]# yum remove mysql-community-client-5.7.40-1.el7.x86_64
[root@cxypa ~]# yum remove mysql57-community-release-el7-7.noarch
[root@cxypa ~]# yum remove mysql-community-libs-5.7.40-1.el7.x86_64
[root@cxypa ~]# yum remove mysql-community-libs-compat-5.7.40-1.el7.x86_64
[root@cxypa ~]# yum remove mysql-community-server-5.7.40-1.el7.x86_64
[root@cxypa ~]# yum remove mysql-community-common-5.7.40-1.el7.x86_64


  1. 查看是否卸载完成
[root@cxypa ~]# rpm -qa |grep -i mysql
[root@cxypa ~]#


  1. 查找MySQL相关目录
find / -name mysql

操作示例:

[root@cxypa ~]# find / -name mysql
/etc/selinux/targeted/active/modules/100/mysql
/var/lib/mysql
/var/lib/mysql/mysql
/usr/share/mysql
[root@cxypa ~]#


  1. 删除相关目录

操作示例:

[root@cxypa ~]# find / -name mysql
/etc/selinux/targeted/active/modules/100/mysql
/var/lib/mysql
/var/lib/mysql/mysql
/usr/share/mysql
[root@cxypa ~]# rm -fr /etc/selinux/targeted/active/modules/100/mysql
[root@cxypa ~]# rm -fr /var/lib/mysql
[root@cxypa ~]# rm -fr /var/lib/mysql/mysql
[root@cxypa ~]# rm -fr /usr/share/mysql
[root@cxypa ~]#
  1. 删除/etc/my.cnf

操作示例:

[root@cxypa ~]# rm -rf /etc/my.cnf
  1. 删除/var/log/mysqld.log(如果不删除这个文件,会导致新安装的MySQL无法生成新密码,导致无法登陆)

操作示例:

rm -rf /var/log/mysqld.log

到此就完成了MySQL的卸载。

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
3月前
|
关系型数据库 应用服务中间件 nginx
Docker一键安装中间件(RocketMq、Nginx、MySql、Minio、Jenkins、Redis)
本系列脚本提供RocketMQ、Nginx、MySQL、MinIO、Jenkins和Redis的Docker一键安装与配置方案,适用于快速部署微服务基础环境。
|
13天前
|
安全 关系型数据库 MySQL
CentOS 7 yum 安装 MySQL教程
在CentOS 7上安装MySQL 8,其实流程很清晰。首先通过官方Yum仓库来安装服务,然后启动并设为开机自启。最重要的环节是首次安全设置:需要先从日志里找到临时密码来登录,再修改成你自己的密码,并为远程连接创建用户和授权。最后,也别忘了在服务器防火墙上放行3306端口,这样远程才能连上。
217 16
|
18天前
|
Ubuntu 安全 关系型数据库
安装与配置MySQL 8 on Ubuntu,包括权限授予、数据库备份及远程连接指南
以上步骤提供了在Ubuntu上从头开始设置、配置、授权、备份及恢复一个基础但完整的MySQL环境所需知识点。
203 7
|
2月前
|
Ubuntu 关系型数据库 MySQL
Ubuntu 22.04.1上安装MySQL 8.0及设置root密码的注意事项
这些是在Ubuntu 22.04.1 系统上安装MySQL 8.0 及设置root密码过程中必须考虑的关键点。正确的遵循这些步骤可确保MySQL的安装过程既顺利又安全。
509 20
|
3月前
|
关系型数据库 MySQL Linux
安装MySQL 5.7到红帽系RHEL8+系列上
本文介绍了在RHEL 8及以上系统中安装MySQL 5.7的两种方法:解压安装与RPM包安装。涵盖环境准备、目录配置、数据盘挂载、初始化及服务启动等关键步骤,适用于红帽系(8+)部署MySQL 5.7。
|
2月前
|
存储 关系型数据库 MySQL
在CentOS 8.x上安装Percona Xtrabackup工具备份MySQL数据步骤。
以上就是在CentOS8.x上通过Perconaxtabbackup工具对Mysql进行高效率、高可靠性、无锁定影响地实现在线快速全量及增加式数据库资料保存与恢复流程。通过以上流程可以有效地将Mysql相关资料按需求完成定期或不定期地保存与灾难恢复需求。
157 10
|
5月前
|
关系型数据库 MySQL Java
安装和配置JDK、Tomcat、MySQL环境,以及如何在Linux下更改后端端口。
遵循这些步骤,你可以顺利完成JDK、Tomcat、MySQL环境的安装和配置,并在Linux下更改后端端口。祝你顺利!
358 11
|
18天前
|
缓存 关系型数据库 BI
使用MYSQL Report分析数据库性能(下)
使用MYSQL Report分析数据库性能
56 3
|
24天前
|
关系型数据库 MySQL 数据库
自建数据库如何迁移至RDS MySQL实例
数据库迁移是一项复杂且耗时的工程,需考虑数据安全、完整性及业务中断影响。使用阿里云数据传输服务DTS,可快速、平滑完成迁移任务,将应用停机时间降至分钟级。您还可通过全量备份自建数据库并恢复至RDS MySQL实例,实现间接迁移上云。
|
11天前
|
关系型数据库 MySQL 分布式数据库
阿里云PolarDB云原生数据库收费价格:MySQL和PostgreSQL详细介绍
阿里云PolarDB兼容MySQL、PostgreSQL及Oracle语法,支持集中式与分布式架构。标准版2核4G年费1116元起,企业版最高性能达4核16G,支持HTAP与多级高可用,广泛应用于金融、政务、互联网等领域,TCO成本降低50%。