文章目录
- 1. mysql的卸载
- 1.1 首先查询系统是否安装了MySQL
- 1.2 关闭MySQL服务
- 1.3 查看MySQL对应的文件夹
- 1.4 卸载并删除MySQL安装的组键服务
- 1.5 删除系统中MySQL的所有文件夹
- 1.6 最后验证MySQL是否删除完成
- 2. mysql的安装与配置
- 2.1 下载mysql8.0安装包
- 2.2 解压mysql8.0安装包
- 2.3 重命名目录为mysql
- 2.4 分别创建mysql用户组以及用户
- 2.5 Linux下安装Mysql为啥要创建对应的用户和用户组?
- 2.6 授权刚刚新建的用户
- 2.7 配置环境变量
- 2.8 编辑(创建)my.cnf文件
- 2.9 初始化基础信息,得到初始密码
- 2.10 复制 mysql.server 文件,在/usr/local/mysql目录下执行
- 2.11 赋予权限
- 2.12 创建/var/lib/mysql
- 2.13 启动数据库
- 2.14 准备登陆
- 2.15 登录成功并重置密码
- 2.16 远程连接
- 3. mysql的操作
- 3.1 创建用户
- 3.2 授权
- 3.3 设置与更改用户密码
- 3.4 撤销用户权限
- 3.5 删除用户
- 3.6 mysql常用命令汇总
- 4. 分析MySQL用户中的百分号%是否包含localhost?
- 4.1 两种连接方法
- 4.2 不同版本的差别
- 4.3 结论
- 5. 相关文章
1. mysql的卸载
1.1 首先查询系统是否安装了MySQL
rpm -qa | grep -i mysql
输出:
perl-DBD-MySQL-4.050-13.el9.x86_64
mysql-community-client-plugins-8.0.30-1.el9.x86_64
mysql-community-common-8.0.30-1.el9.x86_64
mysql-community-libs-8.0.30-1.el9.x86_64
mysql-community-client-8.0.30-1.el9.x86_64
mysql-community-icu-data-files-8.0.30-1.el9.x86_64
mysql-community-server-8.0.30-1.el9.x86_64
从输出可以看到,我安装的MySQL Server,Client都是8.0.30的,我现在要把它卸载掉重新安装。
1.2 关闭MySQL服务
查看MySQL服务运行状态:
service mysql status
输出结果为
SUCCESS! MySQL running (1084471)
或
表示mysql服务正在运行。先关闭服务。
或者查看mysql服务的进程
ps -ef|grep mysql
输出:
显然,mysql服务时开启的。
关闭mysql服务:
service mysql stop
输出:
Shutting down MySQL.. SUCCESS!
表示成功关闭mysql服务。
1.3 查看MySQL对应的文件夹
find / -name mysql
输出:
/home/wangdong/.local/lib/python3.8/site-packages/sqlalchemy/dialects/mysql
/etc/logrotate.d/mysql
/etc/pcp/pmlogconf/mysql
/etc/pcp/dstat/mysql
/var/lib/pcp/config/pmlogconf/mysql
/var/lib/selinux/targeted/active/modules/100/mysql
/var/lib/selinux/targeted/tmp/modules/100/mysql
/var/lib/mysql
/var/lib/mysql/mysql
/usr/bin/mysql
/usr/lib64/perl5/vendor_perl/auto/DBD/mysql
/usr/lib64/perl5/vendor_perl/DBD/mysql
/usr/lib64/mysql
/usr/share/pcp/htop/meters/mysql
/usr/share/bash-completion/completions/mysql
/usr/share/grafana/public/app/plugins/datasource/mysql
/usr/share/grafana/public/lib/monaco/min/vs/basic-languages/mysql
/usr/local/mysql
删掉这些mysql目录,但注意python环境中的数据库包千万不要删掉。长点心。上面第一个。
1.4 卸载并删除MySQL安装的组键服务
rpm -ev mysql-community-common-8.3.30-1.el9.x86_64
rpm -ev mysql-community-release-8.3.30.noarch
rpm -ev mysql-community-client-8.3.30-1.el9.x86_64
rpm -ev mysql-community-server-8.3.30-1.el9.x86_64
rpm -ev mysql-community-libs-8.3.30-1.el9.x86_64
在卸载服务是遇到了三个组件服务无法卸载问题,提示缺少依赖postfix-2:2.10.1-7.el9.x86_64:
error: Failed dependencies:
libmysqlclient.so.18()(64bit) is needed by (installed) postfix-2:2.10.1-7.el9.x86_64
libmysqlclient.so.18(libmysqlclient_18)(64bit) is needed by (installed) postfix-2:2.10.1-7.el9.x86_64
解决方法就是在 rpm -ev 加上–nodeps:
–nodeps就是安装时不检查依赖关系
如:
rpm -ev --nodeps mysql-community-client-8.0.30-1.el9.x86_64
1.5 删除系统中MySQL的所有文件夹
rm -rf /etc/selinux/targeted/active/modules/100/mysql
rm -rf /var/lib/mysql
rm -rf /var/lib/mysql/mysql
rm -rf /usr/share/mysql
...
1.6 最后验证MySQL是否删除完成
rpm -qa | grep -i mysql
如若是空空如也者恭喜你删除成功了。
2. mysql的安装与配置
2.1 下载mysql8.0安装包
cd到/usr/local/,创建mysql目录,下载mysql8.0安装包
cd /usr/local/
可以在官网找到自己中意的版本:https://dev.mysql.com/downloads/mysql/
本文演示相关版本是:
Linux:CentOS9
mysql:mysql-8.0.20
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.20-linux-glibc2.12-x86_64.tar.xz
下载成功
2.2 解压mysql8.0安装包
tar xvJf mysql-8.0.20-linux-glibc2.12-x86_64.tar.xz
2.3 重命名目录为mysql
重命名目录为mysql
mv mysql-8.0.20-linux-glibc2.12-x86_64 mysql
在/use/local/mysql目录下创建data目录存储文件
mkdir data
2.4 分别创建mysql用户组以及用户
分别创建用户组以及用户和密码(如果提示已存在说明之前有创建过了)
groupadd mysql
useradd -g mysql mysql
2.5 Linux下安装Mysql为啥要创建对应的用户和用户组?
当让MySQL运行的时候使用一个独立的账号和用户组时,该用户和用户组权限是可以控制的。当系统中文件的权限未设定给Mysql用户以及用户组时,Mysql用户无法进行读写执行操作。而如果MySQL被黑了,可以通那么开始拿到的权限就是那个创建的账号而不是默认的root,我们在编译安装的时候创建一个mysql组和一个mysql用户,并把datadir和安装目录属主改为mysql。
在MySQL启动的时候,单进程mysqld,该进程的属主就是mysql,这样就保证了mysql服务的独立性,即使mysql服务被黑掉,得到了mysql用户权限,也不会影响整个系统的安全。
2.6 授权刚刚新建的用户
chown -R mysql.mysql /usr/local/mysql/mysql-8.0
chmod 750 /usr/local/mysql/mysql-8.0/data -R
2.7 配置环境变量
配置环境,编辑/etc/profile文件, 即在文件中加上一行export PATH=$PATH:/usr/local/mysql/bin:/usr/local/mysql/lib
vim /etc/profile
#--------------------------
#点击键盘上的i键,进入输入模式,在配置文件最后增加一行:
#--------------------------
export PATH=$PATH:/usr/local/mysql/bin:/usr/local/mysql/lib
#添加完成后,按Esc键退出输入模式,进入命令模式,输入:wq,保存并退出
#然后在输入cat /etc/profile 查看是否保存成功,效果如下:↓↓↓↓↓↓
注意:在配置完环境变量后,需要执行source /etc/profile命令,使配置文件生效。
2.8 编辑(创建)my.cnf文件
vi /etc/my.cnf
[mysql]
default-character-set=utf8mb4
[client]
#port=3306
socket=/var/lib/mysql/mysql.sock
[mysqld]
#port=3306
#server-id=3306
user=mysql
general_log = 1
general_log_file= /var/log/mysql/mysql.log
socket=/var/lib/mysql/mysql.sock
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
log-bin=/usr/local/mysql/data/mysql-bin
innodb_data_home_dir=/usr/local/mysql/data
innodb_log_group_home_dir=/usr/local/mysql/data/
character-set-server=utf8mb4
lower_case_table_names=1
autocommit=1
default_authentication_plugin=mysql_native_password
symbolic-links=0
# Disabling symbolic-links is recommended to prevent assorted security risks
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd
[mysqld_safe]
log-error=/usr/local/mysql/data/mysql.log
pid-file=/usr/local/mysql/data/mysql.pid
#
# include all files from the config directory
注:
- MySQL在5.5.3之后增加了这个utf8mb4的编码,mb4就是most bytes 4的意思,专门用来兼容四字节的unicode。utf8mb4是utf8的超集,除了将编码改为utf8mb4外不需要做其他转换。当然,为了节省空间,一般情况下使用utf8也就够了。
2.9 初始化基础信息,得到初始密码
cd到/usr/local/mysql/bin目录下, 初始化基础信息,得到数据库的初始密码(在/usr/local/mysql/bin目录下执行)
cd bin
./mysqld --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data/ --initialize
#初始化完成后,复制最后的初始密码,保存下来后面需要
#WgzUagc*e6V5
注意可能的报错:
(1) mysqld: File ‘/var/log/mysql/mysql.log’ not found (OS errno 2 - No such file or directory)
目录不存在,安装提示创建目录
(2) The designated data directory /usr/local/mysql/data/ is unusable. You can remove all files that the server added to it.
第一次初始化的时候虽然没有成功,但是已经在这个目录/usr/local/mysql/data/ 下生成了数据,需要将其删除后再运行初始化命令。
操作成功的截图如下:
注意保存这里的初始密码,后面用于mysql -uroot -p
登录。
2.10 复制 mysql.server 文件,在/usr/local/mysql目录下执行
cp -a ./support-files/mysql.server /etc/init.d/mysql
cp -a ./support-files/mysql.server /etc/init.d/mysqld
2.11 赋予权限
chown 777 /etc/my.cnf
chmod +x /etc/init.d/mysql
chmod +x /etc/init.d/mysqld
2.12 创建/var/lib/mysql
检查一下/var/lib/mysql目录是否存在,否则进行创建
mkdir /var/lib/mysql
chown -R mysql:mysql /var/lib/mysql/
2.13 启动数据库
启动数据库,有SUCCESS字眼说明MySQL安装完成
service mysql start
#出现SUCCESS 说明启动成功,效果图如下:
ps:
如果发现启动失败,可以先查看data里面的mysql.log,如果有提示3306这样的字样,第一个想到的应该是端口被占用,使用lsof -i:端口号,查看是哪个PID(进程号)占用了该端口,然后使用kill PID(进程号)杀掉进程,重新执行service mysql start
2.14 准备登陆
mysql -u root -p
(1) 报错:mysql: error while loading shared libraries: libtinfo.so.5: cannot open shared object file: No such file or directory
mysql: error while loading shared libraries: libtinfo.so.5: cannot open shared object file: No such file or directory
- 解决方法1:
yum install libtinfo* -y
- 解决方法2:
cp /lib64/libncurses.so.6 /lib64/libncurses.so.5
或者 添加软连接
ln -s /lib64/libncurses.so.6 /lib64/libncurses.so.5
(2) 报错:ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’
查找mysql.sock 文件,命令如下:
find -name mysql.sock
-
如果文件不存在,可以参考博友的这篇文章https://blog.csdn.net/haifu_xu/article/details/25281599
-
文件存在,但是不存在/var/lib/mysql目录下,做一个软连接即可,在这之前先确定当前用户为root用户,命令为 whoami。比如mysql.sock在/tmp目录下,将其软链到/var/lib/mysql/目录。
ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock
之后重新启动mysql
service mysqld start
2.15 登录成功并重置密码
登录进来之后,如果输入任何命令到报错You must reset your password using ALTER USER statement before executing this statement ; 此时需要重置初始免密
set password='your password'
如果密码符合Mysql要求,会修改成功。如果出现以下错误信息:
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
在必须要修改密码才能运行操作的情况下,可以先将密码修改成一个复杂的符合要求的密码。再执行如下两条语句,之后再将密码设置为简单的即可。
set global validate_password.policy=0;
# 有的是 set global validate_password.policy=LOW;
set global validate_password.length=6;
flush privileges;
2.16 远程连接
用工具(如Navicat)远程连接报错,是由于没有给远程连接的用户权限或者没有开放端口号。
- 用户权限
解决1:更改 ‘mysql’数据库‘user’表‘host’项,从‘localhost’改成‘%’。
use mysql;
select host from user where user='root';
update user set host = '%' where user ='root';
flush privileges;
操作截图如下:
select user,host from mysql.user;
解决2: 直接授权
GRANT ALL PRIVILEGES ON *.* TO root@'%' IDENTIFIED BY ‘youpassword' WITH GRANT OPTION;
- 开放端口号
如果是物理服务器:
查询3306端口是否开放
firewall-cmd --query-port=3306/tcp
没有开放则添加3306端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent
添加端口后刷新防火墙
firewall-cmd --reload
如果是云服务器:
3. mysql的操作
我们上面在安装完成后进行了root用户密码修改,下面我们进行相关用户配置。
3.1 创建用户
CREATE USER 'usernamexxx'@'hostxxx' IDENTIFIED BY 'passwordxxx';
说明:
- hostxxx:指定该用户在哪个主机上可以登陆,如果是本地用户可用localhost,如果想让该用户可以从任意远程主机登陆,可以使用通配符%
- passwordxxx:该用户的登陆密码,密码可以为空,如果为空则该用户可以不需要密码登陆服务器
示例:
CREATE USER 'jack'@'localhost' IDENTIFIED BY '123456';
CREATE USER 'rose'@'192.168.38.110_' IDENDIFIED BY '123456';
CREATE USER 'rose'@'%' IDENTIFIED BY '123456';
CREATE USER 'rose'@'%' IDENTIFIED BY '';
CREATE USER 'rose'@'%';
注意:
创建用户后,该用户只能连接到数据库服务器,但并没有操作该数据库服务器的权限。
3.2 授权
GRANT privilegesxxx ON databasenamexxx.tablenamexxx TO 'usernamexxx'@'hostxxx'
说明:
- privilegesxxx:用户的操作权限,如SELECT,INSERT,UPDATE等,如果要授予所的权限则使用ALL
- databasenamexxx:数据库名
- tablenamexxx:表名,如果要授予该用户对所有数据库和表的相应操作权限则可用表示,如.*
示例:
GRANT SELECT, INSERT ON DbXXX.user TO 'jack'@'%';
GRANT ALL ON *.* TO 'jack'@'%';
GRANT ALL ON DbXXX.* TO 'jack'@'%';
注意:
- 授权之后需要用户重连MySQL,才能获取相应的权限。
- 用以上命令授权的用户不能给其它用户授权,如果想让该用户可以授权,用以下命令:
GRANT privilegesxxx ON databasenamexxx.tablenamexxx TO 'usernamexxx'@'hostxxx' WITH GRANT OPTION;
3.3 设置与更改用户密码
设置与更改用户密码
SET PASSWORD FOR 'usernamexxx'@'hostxxx' = PASSWORD('newpasswordxxx');
如果是当前登陆用户用:SET PASSWORD = PASSWORD("newpasswordxxx");
示例:
SET PASSWORD FOR 'jack'@'%' = PASSWORD("123456");
3.4 撤销用户权限
REVOKE privilegexxx ON databasenamexxx.tablenamexxx FROM 'usernamexxx'@'hostxxx';
示例:
REVOKE SELECT ON *.* FROM 'jack'@'%';
注意:
假如你在给用户’jack’@'%'授权的时候是这样的(或类似的):GRANT SELECT ON test.user TO 'jack'@'%'
,则在使用REVOKE SELECT ON *.* FROM 'jack'@'%';
命令并不能撤销该用户对test数据库中user表的SELECT 操作。相反,如果授权使用的是GRANT SELECT ON *.* TO 'jack'@'%';
则REVOKE SELECT ON test.user FROM 'jack'@'%';
命令也不能撤销该用户对test数据库中user表的Select权限。
具体信息可以用命令SHOW GRANTS FOR 'jack'@'%';
查看。
3.5 删除用户
DROP USER 'usernamexxx'@'hostxxx';
3.6 mysql常用命令汇总
1.创建用户
格式:CREATE USER 'username'@'host' IDENTIFIED BY 'password';
例如:CREATE USER 'chun'@'%' IDENTIFIED BY 'chun';
PS:username - 你将创建的用户名,
host - 指定该用户在哪个主机上可以登陆,此处的"localhost",是指该用户只能在本地登录,不能在另外一台机器上远程登录,如果想远程登录的话,将"localhost"改为"%",表示在任何一台电脑上都可以登录;也可以指定某台机器可以远程登录;
password - 该用户的登陆密码,密码可以为空,如果为空则该用户可以不需要密码登陆服务器。
2.给用户授权
1. 查询访问权限
select user,host from mysql.user;
2. 给用户授权
命令:GRANT privileges ON databasename.tablename TO 'username'@'host'
例如:GRANT privileges ON *.* TO 'chun'@'%';
PS: privileges - 用户的操作权限,如SELECT , INSERT , UPDATE 等(详细列表见该文最后面).如果要授予所的权限则使用ALL.;databasename - 数据库名,tablename-表名,如果要授予该用户对所有数据库和表的相应操作权限则可用*表示, 如*.*.*
3.设置与更改用户密码
命令:SET PASSWORD FOR 'username'@'host' = PASSWORD('newpassword');
例子: SET PASSWORD FOR 'chun'@'%' = PASSWORD("chun");
4.撤销用户权限
命令: REVOKE privilege ON databasename.tablename FROM 'username'@'host';
说明: privilege, databasename, tablename - 同授权部分.
例子: REVOKE SELECT ON mq.* FROM 'chun'@'localhost';
PS: 假如你在给用户'dog'@'localhost''授权的时候是这样的(或类似的):GRANT SELECT ON test.user TO 'dog'@'localhost', 则在使用REVOKE SELECT ON *.* FROM 'dog'@'localhost';命令并不能撤销该用户对test数据库中user表的SELECT 操作.相反,如果授权使用的是GRANT SELECT ON *.* TO 'dog'@'localhost';则REVOKE SELECT ON test.user FROM 'dog'@'localhost';命令也不能撤销该用户对test数据库中user表的Select 权限.
具体信息可以用命令SHOW GRANTS FOR 'dog'@'localhost'; 查看.
5.删除用户
命令: DROP USER 'username'@'host';
6.查看用户的授权
mysql> show grants for dog@localhost;
PS:GRANT USAGE:mysql usage权限就是空权限,默认create user的权限,只能连库,啥也不能干
7.数据库的创建和销毁
创建:create database 数据库名;
例如:create database mytest;
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| CARDGAME |
| mysql |
| mytest |
| performance_schema |
| test |
+--------------------+
销毁:drop database 数据库名;
例如:drop database mytest;
mysql> flush privileges;
把新的数据库授权给新用户
#将test库的所有权限赋予mysql用户
grant all privileges on test.* to "mysql"@"%";
grant all privileges on test.* to "tcl"@"%";
8.创建数据库表和删除表
创建表:
use 数据库名;
create table tb_dept( Id int primary key auto_increment, Name varchar(18),description varchar(100));
mysql> show tables;
+-------------------+
| Tables_in_mystest |
+-------------------+
| tb_dept |
+-------------------+
1 row in set (0.00 sec)
删除表:drop table 表名;
例如:drop table tb_dept;
9.给表添加索引:
1.添加PRIMARY KEY(主键索引)
mysql>ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` )
2.添加UNIQUE(唯一索引)
mysql>ALTER TABLE `table_name` ADD UNIQUE (`column`)
3.添加INDEX(普通索引)
mysql>ALTER TABLE `table_name` ADD INDEX index_name ( `column` )
4.添加FULLTEXT(全文索引)
mysql>ALTER TABLE `table_name` ADD FULLTEXT ( `column`)
5.添加多列索引
mysql>ALTER TABLE `table_name` ADD INDEX index_name ( `column1`, `column2`, `column3` )
10. mysql编码
1. 查看mysql编码
show variables like '%character%';
2. 为什么输入中文会报错,输入英文就成功了?
原因:因为数据表中的内容为latin1字符集,latin1字符集为8bit,这说明它是不能表示中文的,因此会有报错。
修改库字符集:
alter database joyrun character set utf8;
修改表字符集:
alter table tbl_run character set utf8;
修改字段字符集:
alter table tbl_run change name name varchar(20) character set utf8;
4. 分析MySQL用户中的百分号%是否包含localhost?
操作MySQL的时候发现,有时只建了%的账号,可以通过localhost连接,有时候却不可以,网上搜索也找不到满意的答案,干脆手动测试一波
4.1 两种连接方法
[mysql@mysql-test-83 ~]$ /usr/local/mysql57/bin/mysql -utest_user -p -hlocalhost
Enter password:
mysql> status
/usr/local/mysql57/bin/mysql Ver 14.14 Distrib 5.7.21, for linux-glibc2.12 (x86_64) using EditLine wrapper
Connection id: 9
Current database:
Current user: test_user@localhost
SSL: Not in use
Current pager: stdout
Using outfile: ''
Using delimiter: ;
Server version: 5.7.21-log MySQL Community Server (GPL)
Protocol version: 10
Connection: Localhost via UNIX socket
从Current user可以看到用户是xx@localhost, 连接方式为Localhost via UNIX socket
-h 参数为 IP
当-h参数为IP的时候,实际上是使用TCP连接的, 实例如下
[mysql@mysql-test-83 ~]$ /usr/local/mysql57/bin/mysql -utest_user -p -h127.0.0.1
Enter password:
mysql> status
--------------
/usr/local/mysql57/bin/mysql Ver 14.14 Distrib 5.7.21, for linux-glibc2.12 (x86_64) using EditLine wrapper
Connection id: 11
Current database:
Current user: test_user@127.0.0.1
SSL: Cipher in use is DHE-RSA-AES256-SHA
Current pager: stdout
Using outfile: ''
Using delimiter: ;
Server version: 5.7.21-log MySQL Community Server (GPL)
Protocol version: 10
Connection: 127.0.0.1 via TCP/IP
Server characterset: utf8
从Current user可以看到用户是xx@127.0.0.1, 连接方式为TCP/IP
4.2 不同版本的差别
测试方法就是看能不能连接,如果不想看测试过程可以拉到最后看结论
- MySQL 8.0
- 创建用户
mysql> select version();
+-----------+
| version() |
+-----------+
| 8.0.11 |
+-----------+
1 row in set (0.00 sec)
mysql> create user test_user@'%' identified by 'test_user';
Query OK, 0 rows affected (0.07 sec)
- 使用 localhost 登录
[root@mysql-test-72 ~]# /usr/local/mysql80/bin/mysql -utest_user -p -hlocalhost
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 9
Server version: 8.0.11 MySQL Community Server - GPL
========= 省略 ===========
mysql> status
--------------
/usr/local/mysql80/bin/mysql Ver 8.0.11 for linux-glibc2.12 on x86_64 (MySQL Community Server - GPL)
Connection id: 9
Current database:
Current user: test_user@localhost
SSL: Not in use
Current pager: stdout
Using outfile: ''
Using delimiter: ;
Server version: 8.0.11 MySQL Community Server - GPL
Protocol version: 10
Connection: Localhost via UNIX socket
...
- 使用 IP 登录
[root@mysql-test-72 ~]# /usr/local/mysql80/bin/mysql -utest_user -p -h127.0.0.1
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.11 MySQL Community Server - GPL
========= 省略 ===========
mysql> status
--------------
/usr/local/mysql80/bin/mysql Ver 8.0.11 for linux-glibc2.12 on x86_64 (MySQL Community Server - GPL)
Connection id: 8
Current database:
Current user: test_user@127.0.0.1
SSL: Cipher in use is DHE-RSA-AES128-GCM-SHA256
Current pager: stdout
Using outfile: ''
Using delimiter: ;
Server version: 8.0.11 MySQL Community Server - GPL
Protocol version: 10
Connection: 127.0.0.1 via TCP/IP
结果显示8.0版本的MySQL, % 包括localhost
- MySQL 5.7
- 创建用户
db83-3306>>create user test_user@'%' identified by 'test_user';
Query OK, 0 rows affected (0.00 sec)
- 使用 localhost 登录
[mysql@mysql-test-83 ~]$ /usr/local/mysql57/bin/mysql -utest_user -p -hlocalhost
Enter password:
========= 省略 ===========
mysql> status
/usr/local/mysql57/bin/mysql Ver 14.14 Distrib 5.7.21, for linux-glibc2.12 (x86_64) using EditLine wrapper
Connection id: 9
Current database:
Current user: test_user@localhost
SSL: Not in use
Current pager: stdout
Using outfile: ''
Using delimiter: ;
Server version: 5.7.21-log MySQL Community Server (GPL)
Protocol version: 10
Connection: Localhost via UNIX socket
....
- 使用 IP 登录
[mysql@mysql-test-83 ~]$ /usr/local/mysql57/bin/mysql -utest_user -p -h127.0.0.1
Enter password:
========= 省略 ===========
mysql> status
--------------
/usr/local/mysql57/bin/mysql Ver 14.14 Distrib 5.7.21, for linux-glibc2.12 (x86_64) using EditLine wrapper
Connection id: 11
Current database:
Current user: test_user@127.0.0.1
SSL: Cipher in use is DHE-RSA-AES256-SHA
Current pager: stdout
Using outfile: ''
Using delimiter: ;
Server version: 5.7.21-log MySQL Community Server (GPL)
Protocol version: 10
Connection: 127.0.0.1 via TCP/IP
Server characterset: utf8
...
结果显示5.7版本的MySQL, % 包括localhost
4.3 结论
版本用户中的%是否包括localhost
mysql版本 | %是否包括localhost |
---|---|
MySQL8.0 | 包括 |
MySQL5.7 | 包括 |
MySQL5.6 | 不包括 |
MySQL5.1 | 不包括 |
MariaDB 10.3 | 不包括 |
以上就是分析MySQL用户中的百分号%是否包含localhost?
5. 相关文章
联合索引、索引覆盖和索引下推详解
参考:
https://www.jb51.net/article/258197.htm
https://blog.csdn.net/haifu_xu/article/details/25281599