mysql_08_ yum(dnf)安装

Mysql使用yum(dnf)安装

为了数据安全、性能等各方面的原因,一般生产环境中,可以将mysql直接在宿主机上运行,不使用docker,mysql yum安装(dnf 和yum 配置一样)的配置如下:

下载 yum 源

官网地址: https://dev.mysql.com/downloads/repo/yum/
下载指定 的rpm包上传到服务器上,这里我下载的是mysql80-community-release-el8-1.noarch.rpm

[root@www ~]# pwd
/root
[root@www ~]# ll
-rw-r--r--  1 root root     30388 Apr 10 11:08 mysql80 mysql80-community-release-el8-1.noarch.rpm

安装yum源

以下三个命令任选择一种即可

## 使用 yum安装
[root@www ~]# yum install mysql80 mysql80-community-release-el8-1.noarch.rpm -y
## 使用 dnf 安装
[root@www ~]# dnf install mysql80 mysql80-community-release-el8-1.noarch.rpm -y
## 使用 rpm 安装
[root@www ~]# rpm -ivh mysql80 mysql80-community-release-el8-1.noarch.rpm 

执行完成后,会在 /etc/yum.repos.d/ 目录生成 mysql-community.repomysql-community-source.repo 文件

[root@www ~]# ll /etc/yum.repos.d/
total 88
-rw-r--r--. 1 root root  731 Jun  3  2020 CentOS-AppStream.repo
-rw-r--r--. 1 root root  712 Jun  3  2020 CentOS-Base.repo
-rw-r--r--. 1 root root  798 Jun  3  2020 CentOS-centosplus.repo
-rw-r--r--. 1 root root 1043 Jun  3  2020 CentOS-CR.repo
-rw-r--r--. 1 root root  668 Jun  3  2020 CentOS-Debuginfo.repo
-rw-r--r--. 1 root root  743 Jun  3  2020 CentOS-Devel.repo
-rw-r--r--. 1 root root  756 Jun  3  2020 CentOS-Extras.repo
-rw-r--r--. 1 root root  338 Jun  3  2020 CentOS-fasttrack.repo
-rw-r--r--. 1 root root  738 Jun  3  2020 CentOS-HA.repo
-rw-r--r--. 1 root root  928 Jun  3  2020 CentOS-Media.repo
-rw-r--r--. 1 root root  736 Jun  3  2020 CentOS-PowerTools.repo
-rw-r--r--. 1 root root 1382 Jun  3  2020 CentOS-Sources.repo
-rw-r--r--. 1 root root   74 Jun  3  2020 CentOS-Vault.repo
-rw-r--r--. 1 root root 2424 Jul 25  2020 docker-ce.repo
-rw-r--r--. 1 root root 1177 Nov  1 04:31 epel-modular.repo
-rw-r--r--. 1 root root 1259 Nov  1 04:31 epel-playground.repo
-rw-r--r--. 1 root root 1114 Nov  1 04:31 epel.repo
-rw-r--r--. 1 root root 1276 Nov  1 04:31 epel-testing-modular.repo
-rw-r--r--. 1 root root 1213 Nov  1 04:31 epel-testing.repo
-rw-r--r--  1 root root  995 Oct  4  2019 mysql-community.repo
-rw-r--r--  1 root root 1050 Oct  4  2019 mysql-community-source.repo
-rw-r--r--. 1 root root  160 Dec 10  2019 wlnmp-release-centos.repo
[root@www ~]# 

如果要卸载rpm

## 查询
[root@www ~]# rpm -qa|grep mysql
mysql80-community-release-el8-1.noarch
## 卸载
[root@www ~]# rpm -e mysql80-community-release

启动指定的mysql版本:

## 因为我这里本来下载的源就是mysql8的,所以这一步可以省略。
[root@www ~]# dnf config-manager --enable mysql80-community

## 启动后,在这个文件中的 mysql80-community enabled=1,,表示启动这个版本作为默认
[root@www ~]# cat /etc/yum.repos.d/mysql-community.repo
[mysql80-community]
name=MySQL 8.0 Community Server
baseurl=http://repo.mysql.com/yum/mysql-8.0-community/el/8/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql

禁用系统默认版本

[root@www ~]# dnf module disable mysql

安装Mysql

## 查询yum源中的所有mysql,如下,会显示很多mysql版本
[root@www ~]# dnf --showduplicates list|grep mysql-community-server
mysql-community-server.x86_64                             8.0.17-1.el8                                      mysql80-community         
mysql-community-server.x86_64                             8.0.18-1.el8                                      mysql80-community         
mysql-community-server.x86_64                             8.0.19-1.el8                                      mysql80-community         
mysql-community-server.x86_64                             8.0.20-1.el8                                      mysql80-community         
mysql-community-server.x86_64                             8.0.21-1.el8                                      mysql80-community         
mysql-community-server.x86_64                             8.0.22-1.el8                                      mysql80-community         
mysql-community-server.x86_64                             8.0.23-1.el8                                      mysql80-community
[root@www ~]# 

## 格式为 dnf instll mysql-community-server版本 ,如果直接执行 dnf instll mysql-community-server -y,会下载最新的版本
[root@www ~]# dnf install mysql-community-server-8.0.22 -y

配置Mysql参数

  • /etc/my.conf添加 如下
[root@www etc]# vim /etc/my.cnf

## 指定配置从哪个目录加载
!includedir /etc/my.cnf.d/
  • 创建 mysql.conf配置
[root@www etc]# vim /etc/my.cnf.d/mysql.cnf
[mysqld]
#忽略表名大小写
lower_case_table_names=1
#允许最大连接数,默认为 151
max_connections=500
#允许连接失败的次数,可以防止有人从该主机试图攻击数据库系统,默认值为100
max_connect_errors=10
################################  InnoDB         ########################################
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
innodb_buffer_pool_size=2G
#innodb_additional_pool_size=20M
innodb_log_file_size=256M
innodb_log_buffer_size=12M
innodb_flush_log_at_trx_commit=2
#innodb_flush_method
#thread_cache=8
#innodb_autoextend_increment=128M
#这里确认是否起用压缩存储功能
innodb_file_per_table=1
#innodb_file_format=barracuda #mysql 8 不支持该功能
#决定压缩程度的参数,如果你设置比较大,那么压缩比较多,耗费的CPU资源也较多;
#相反,如果设置较小的值,那么CPU占用少。默认值6,可以设置0-9#
innodb_compression_level=6
#指定在每个压缩页面可以作为空闲空间的最大比例,
#该参数仅仅应用在设置了innodb_compression_failure_threshold_pct不为零情况下,并且压缩失败率通过了中断点。
#默认值50,可以设置范围是0到75
innodb_compression_pad_pct_max=50
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
# 字符集设置
character-set-server=utf8mb4
collation-server=utf8mb4_0900_ai_ci
# 配置 init_connect 需要配置 super 权限,否则普通用户连接时会报错: Lost connection to MySQL server during query
# init_connect=’SET NAMES utf8mb4'
# ## 忽略客户端使用的字符集,使用服务端的字符集
character-set-client-handshake=OFF
[mysql]
default-character-set=utf8mb4
[client]
default-character-set=utf8mb4

启动 Mysql

## 启动
[root@www ~]# systemctl start mysqld.service
## 查看mysql服务状态
[root@www ~]# systemctl status mysqld.service
## 添加开机启动
[root@www ~]# systemctl enable mysqld.service

查看 Mysql 进程:

如下所示,Mysql服务已启动成功,并监听3306端口

[root@www ~]# ps -ef|grep mysql
mysql      34011       1  3 13:59 ?        00:00:05 /usr/sbin/mysqld
root       34125    5808  0 14:02 pts/0    00:00:00 grep --color=auto mysql
[root@www ~]# netstat -anpl|grep 3306
tcp6       0      0 :::33060                :::*                    LISTEN      34011/mysqld        
tcp6       0      0 :::3306                 :::*                    LISTEN      34011/mysqld        
[root@www ~]# 

Mysql默认安装目录

  • 配置文件: /etc/my.conf
  • 数据目录: /var/lib/mysql
  • 日志文件: /var/log/mysqld.log

Mysql默认密码

## 查看日志文件,有个generated for root 的日志最后就是密码,如这里的密码就是  w=HweHqG*0)O
[root@www ~]# cat /var/log/mysqld.log 
2021-04-10T05:59:43.377330Z 0 [System] [MY-013169] [Server] /usr/sbin/mysqld (mysqld 8.0.22) initializing of server in progress as process 33966
2021-04-10T05:59:43.382242Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2021-04-10T05:59:43.573803Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2021-04-10T05:59:44.303221Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: w=HweHqG*0)O

登陆Mysql、密码组件安装卸载

## 输入日志文件中的默认密码登陆
[root@www ~]#  mysql -uroot -p
Enter password: 

初次登陆后,需要强制修改密码,密码需要一定的格式,格式规则可通过 SHOW VARIABLES LIKE '%validate_password%' 查看,如果你觉得修改 validate_password.xxx的参数太多,比较麻烦,可以直接卸载 myql 密码验证的 component。

mysql> alter user 'root'@'localhost' IDENTIFIED BY 'Root@1234';
Query OK, 0 rows affected (0.01 sec)
mysql> select version();
+-----------+
| version() |
+-----------+
| 8.0.22    |
+-----------+
1 row in set (0.00 sec)

-- 查看密码设置的规则
-- validate_password.length: 密码长度,最小值4,默认值为8
-- validate_password.mixed_case_count  大小写的最小个数
-- validate_password.number_count 密码中数字的最小个数
-- validate_password.policy 密码验证策略: 0-->LOW 1-->MEDIUM  2-->strong
-- validate_password.special_char_count  特殊字符的最小个数
mysql> SHOW VARIABLES LIKE '%validate_password%';
+--------------------------------------+--------+
| Variable_name                        | Value  |
+--------------------------------------+--------+
| validate_password.check_user_name    | ON     |
| 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> set global validate_password.length=4;
-- mysql> set global validate_password.policy=LOW;
-- mysql> set global validate_password.number_count=0;
-- mysql> set global validate_password.special_char_count=0;

-- 如果你觉得上面一个个设置参数太麻烦,可以直接卸载MySql密码验证的 component
-- 查看component
mysql> SELECT * FROM mysql.component;
+--------------+--------------------+------------------------------------+
| component_id | component_group_id | component_urn                      |
+--------------+--------------------+------------------------------------+
|            1 |                  1 | file://component_validate_password |
+--------------+--------------------+------------------------------------+
1 row in set (0.00 sec)

-- 卸载组件,卸载之后, validate_password.xxx 的这些参数将不存在,且可任意设置Mysql的密码
mysql> UNINSTALL COMPONENT 'file://component_validate_password';
Query OK, 0 rows affected (0.01 sec)

-- 卸载validate_password组件后,设置mysql密码将不验证,可任意配置
mysql> alter user 'root'@'localhost' IDENTIFIED BY 'root';
Query OK, 0 rows affected (0.00 sec)

-- 如果你想安装组件,执行install命令
mysql> INSTALL COMPONENT 'file://component_validate_password';
Query OK, 0 rows affected (0.00 sec)

-- 再次查看,组件又回来了,同时,上面的 validate_password.xxx 的这些参数也会存在。
mysql> SELECT * FROM mysql.component;
+--------------+--------------------+------------------------------------+
| component_id | component_group_id | component_urn                      |
+--------------+--------------------+------------------------------------+
|            2 |                  2 | file://component_validate_password |
+--------------+--------------------+------------------------------------+
1 row in set (0.00 sec)
mysql>

修改mysql远程访问权限

默认情况下,Mysql只能在本机访问,如果需要远程连接,操作如下:

mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed

mysql> select user,host from user;
+------------------+-----------+
| user             | host      |
+------------------+-----------+
| mysql.infoschema | localhost |
| mysql.session    | localhost |
| mysql.sys        | localhost |
| root             | localhost |
+------------------+-----------+
4 rows in set (0.00 sec)

-- 使用 update会更新已存在的用户,也可以使用 grant 语句。
-- GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION; 

mysql> update user set host='%' where user='root';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

-- 刷新权限
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)

--  再次查询,如下 ,root 用户的host 为%了,此时可以所有客户端可以连接mysql。
mysql> select user,host from user;
+------------------+-----------+
| user             | host      |
+------------------+-----------+
| root             | %         |
| mysql.infoschema | localhost |
| mysql.session    | localhost |
| mysql.sys        | localhost |
+------------------+-----------+
4 rows in set (0.00 sec)
mysql> 

卸载Mysql

## 先停止mysql启动服务
[root@www ~]# systemctl disable mysqld.service
## 删除 mysql
[root@www ~]# dnf remove mysql-community-server
## 删除mysql数据目录
[root@www ~]# rm -rf /var/lib/mysql
[root@www ~]# rm -rf /usr/share/mysql
[root@www ~]# rm -rf /usr/lib/mysql
[root@www ~]# rm -rf /var/run/mysql/
[root@www ~]# rm -rf /var/log/mysqld.log
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hellowordx007

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值