MySQL 8 安装
环境:
-
CentOS7
-
mysql-8.0.30-1.el7.x86_64.rpm-bundle.tar
前期准备
1.检查环境是否安装MySQL
[root@hadoop1 ~]# rpm -qa | grep -i mysql
2.检查Linux是否自带MariaDB
[root@hadoop1 ~]# rpm -qa | grep mariadb
mariadb-5.5.68-1.el7.x86_64
mariadb-devel-5.5.68-1.el7.x86_64
mariadb-libs-5.5.68-1.el7.x86_64
3.卸载MariaDB
rpm -e --nodeps 包名
[root@hadoop1 ~]# rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64
[root@hadoop1 ~]# rpm -e --nodeps mariadb-5.5.68-1.el7.x86_64
[root@hadoop1 ~]# rpm -e --nodeps mariadb-devel-5.5.68-1.el7.x86_64
4.查看删除MySQL目录
[root@hadoop1 ~]# whereis mysql
mysql: /usr/lib64/mysql
[root@hadoop1 ~]# rm -rf /usr/lib64/mysql
安装步骤
1.解压到/software/mysql-8.0.30文件夹
[root@hadoop1 software]# tar -xvf mysql-8.0.30-1.el7.x86_64.rpm-bundle.tar -C ./mysql-8.0.30
mysql-community-client-8.0.30-1.el7.x86_64.rpm
mysql-community-client-plugins-8.0.30-1.el7.x86_64.rpm
mysql-community-common-8.0.30-1.el7.x86_64.rpm
mysql-community-debuginfo-8.0.30-1.el7.x86_64.rpm
mysql-community-devel-8.0.30-1.el7.x86_64.rpm
mysql-community-embedded-compat-8.0.30-1.el7.x86_64.rpm
mysql-community-icu-data-files-8.0.30-1.el7.x86_64.rpm
mysql-community-libs-8.0.30-1.el7.x86_64.rpm
mysql-community-libs-compat-8.0.30-1.el7.x86_64.rpm
mysql-community-server-8.0.30-1.el7.x86_64.rpm
mysql-community-server-debug-8.0.30-1.el7.x86_64.rpm
mysql-community-test-8.0.30-1.el7.x86_64.rpm
2.安装包
按以下顺序执行
[root@hadoop1 mysql-8.0.30]# rpm -ivh mysql-community-common-8.0.30-1.el7.x86_64.rpm
[root@hadoop1 mysql-8.0.30]# rpm -ivh mysql-community-client-plugins-8.0.30-1.el7.x86_64.rpm
[root@hadoop1 mysql-8.0.30]# rpm -ivh mysql-community-libs-8.0.30-1.el7.x86_64.rpm
[root@hadoop1 mysql-8.0.30]# rpm -ivh mysql-community-client-8.0.30-1.el7.x86_64.rpm
[root@hadoop1 mysql-8.0.30]# rpm -ivh mysql-community-icu-data-files-8.0.30-1.el7.x86_64.rpm
[root@hadoop1 mysql-8.0.30]# rpm -ivh mysql-community-server-8.0.30-1.el7.x86_64.rpm
3.设置大小写不敏感
★★★★★★★★★★特别注意:对于MySQL8.0版本,修改大小写敏感必须要在初始化之前,即启动服务之前★★★★★★★★★★
- 修改/etc/my.cnf 添加lower_case_table_names=1
- 0 :敏感
- 1 :不敏感
[root@hadoop1 lib]# vi /etc/my.cnf
lower_case_table_names=1
4.启动MySQL服务
[root@hadoop1 mysql-8.0.30]# systemctl start mysqld.service
[root@hadoop1 mysql-8.0.30]# systemctl status mysqld
mysqld.service - MySQL Server
Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
Active: active (running) since Tue 2022-11-29 14:41:10 CST; 28s ago
Docs: man:mysqld(8)
http://dev.mysql.com/doc/refman/en/using-systemd.html
Process: 1551 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS)
Main PID: 1733 (mysqld)
Status: "Server is operational"
CGroup: /system.slice/mysqld.service
└─1733 /usr/sbin/mysqld
Nov 29 14:40:58 hadoop1 systemd[1]: Starting MySQL Server...
Nov 29 14:41:10 hadoop1 systemd[1]: Started MySQL Server.
4.查看默认密码
[root@hadoop1 mysql-8.0.30]# grep "password" /var/log/mysqld.log
2022-11-29T06:41:04.163629Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: Auis9w%<iq:e
[root@hadoop1 mysql-8.0.30]# grep "temporary password" /var/log/mysqld.log
2022-11-29T06:41:04.163629Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: Auis9w%<iq:e
5.使用默认密码登录,并修改密码
[root@hadoop1 mysql-8.0.30]# mysql -uroot -p
Enter password:
mysql> alter user root@'localhost' identified by '1111.aaaa';
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
mysql> set global validate_password.policy=0;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
mysql> alter user root@'localhost' identified by '1111.Aaaa';
Query OK, 0 rows affected (0.05 sec)
mysql> set global validate_password.policy=0;
Query OK, 0 rows affected (0.00 sec)
mysql> alter user root@'localhost' identified by '1111.aaaa';
Query OK, 0 rows affected (0.00 sec)
6.设置允许远程登录
- 方式一:重启后生效,修改root访问权限
mysql> use mysql;
mysql> select host, user from user;
+-----------+------------------+
| host | user |
+-----------+------------------+
| localhost | mysql.infoschema |
| localhost | mysql.session |
| localhost | mysql.sys |
| localhost | root |
+-----------+------------------+
mysql> update user set host='%' where user ='root';
mysql> select host, user from user;
+-----------+------------------+
| host | user |
+-----------+------------------+
| % | root |
| localhost | mysql.infoschema |
| localhost | mysql.session |
| localhost | mysql.sys |
+-----------+------------------+
mysql> flush privileges;
mysql> exit;
[root@hadoop1 mysql-8.0.30]# systemctl restart mysqld.service
- 方式二:直接生效,新增root远程权限
mysql> create user root@'%' identified by '1111.aaaa';
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
mysql> set global validate_password.policy=0;
mysql> create user root@'%' identified by '1111.aaaa';
mysql> grant all privileges on *.* to root@'%' with grant option;
mysql> flush privileges;
mysql> use mysql;
mysql> select host, user from user;
+-----------+------------------+
| host | user |
+-----------+------------------+
| % | root |
| localhost | mysql.infoschema |
| localhost | mysql.session |
| localhost | mysql.sys |
| localhost | root |
+-----------+------------------+
7.查看密码相关配置
修改方式:
-
set global validate_password.policy=0; #设置为弱口令
-
set global validate_password.length=1; #密码最小长度为1
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 | LOW |
| validate_password.special_char_count | 1 |
+--------------------------------------+-------+
-
设置为ON的时候表示能将密码设置成当前用户名
- validate_password.check_user_name=ON
-
用于检查密码的字典文件的路径名
- validate_password_dictionary_file
-
强制执行的密码策略,可以用数值0、1、2或相应的符号值LOW、MEDIUM、STRONG来指定
- validate_password.policy=MEDIUM
-
密码最小长度
- validate_password.length=8
-
必须包含1个大写和1个小写
- validate_password.mixed_case_count=1
-
必须包含1个数字
- validate_password.number_count=1
-
必须包含1个特殊字符
- validate_password.special_char_count=1
8.新建用户并授权
mysql> create database test;
mysql> create user 'test'@'%' identified by '1111.aaaa';
mysql> grant all privileges on test.* to 'test'@'%';
mysql> flush privileges;