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

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 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的卸载。

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
4天前
|
Linux Python
Linux 安装python3.7.6
本教程介绍在Linux系统上安装Python 3.7.6的步骤。首先使用`yum`安装依赖环境,包括zlib、openssl等开发库。接着通过`wget`下载Python 3.7.6源码包并解压。创建目标文件夹`/usr/local/python3`后,进入解压目录执行配置、编译和安装命令。最后设置软链接,使`python3`和`pip3`命令生效。
|
6天前
|
关系型数据库 MySQL 数据库
docker高级篇(大厂进阶):安装mysql主从复制
docker高级篇(大厂进阶):安装mysql主从复制
60 24
|
7天前
|
Ubuntu Linux
Linux 各发行版安装 ping 命令指南
如何在不同 Linux 发行版(Ubuntu/Debian、CentOS/RHEL/Fedora、Arch Linux、openSUSE、Alpine Linux)上安装 `ping` 命令,详细列出各发行版的安装步骤和验证方法,帮助系统管理员和网络工程师快速排查网络问题。
69 20
|
7天前
|
Unix Linux 编译器
UNIX/Linux 上的安装
UNIX/Linux 上的安装。
23 2
|
19天前
|
关系型数据库 MySQL Linux
MySQL数据库下载安装教程(Windows&Linux)
本文档详细介绍了MySQL的安装步骤,包括安装前的准备工作、下载安装包、Windows和Linux系统下的具体安装流程,以及如何配置MySQL服务、设置环境变量、启动服务和连接数据库等关键操作。
|
1月前
|
NoSQL Linux PHP
如何在不同操作系统上安装 Redis 服务器,包括 Linux 和 Windows 的具体步骤
本文介绍了如何在不同操作系统上安装 Redis 服务器,包括 Linux 和 Windows 的具体步骤。接着,对比了两种常用的 PHP Redis 客户端扩展:PhpRedis 和 Predis,详细说明了它们的安装方法及优缺点。最后,提供了使用 PhpRedis 和 Predis 在 PHP 中连接 Redis 服务器及进行字符串、列表、集合和哈希等数据类型的基本操作示例。
60 4
|
1月前
|
运维 关系型数据库 MySQL
安装MySQL8数据库
本文介绍了MySQL的不同版本及其特点,并详细描述了如何通过Yum源安装MySQL 8.4社区版,包括配置Yum源、安装MySQL、启动服务、设置开机自启动、修改root用户密码以及设置远程登录等步骤。最后还提供了测试连接的方法。适用于初学者和运维人员。
181 0
|
1天前
|
存储 Oracle 关系型数据库
数据库传奇:MySQL创世之父的两千金My、Maria
《数据库传奇:MySQL创世之父的两千金My、Maria》介绍了MySQL的发展历程及其分支MariaDB。MySQL由Michael Widenius等人于1994年创建,现归Oracle所有,广泛应用于阿里巴巴、腾讯等企业。2009年,Widenius因担心Oracle收购影响MySQL的开源性,创建了MariaDB,提供额外功能和改进。维基百科、Google等已逐步替换为MariaDB,以确保更好的性能和社区支持。掌握MariaDB作为备用方案,对未来发展至关重要。
10 3
|
1天前
|
安全 关系型数据库 MySQL
MySQL崩溃保险箱:探秘Redo/Undo日志确保数据库安全无忧!
《MySQL崩溃保险箱:探秘Redo/Undo日志确保数据库安全无忧!》介绍了MySQL中的三种关键日志:二进制日志(Binary Log)、重做日志(Redo Log)和撤销日志(Undo Log)。这些日志确保了数据库的ACID特性,即原子性、一致性、隔离性和持久性。Redo Log记录数据页的物理修改,保证事务持久性;Undo Log记录事务的逆操作,支持回滚和多版本并发控制(MVCC)。文章还详细对比了InnoDB和MyISAM存储引擎在事务支持、锁定机制、并发性等方面的差异,强调了InnoDB在高并发和事务处理中的优势。通过这些机制,MySQL能够在事务执行、崩溃和恢复过程中保持
13 3