Linux中mysql的安装|配置|操作|卸载

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)


service mysql表示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

下载成功
mysql

2.2 解压mysql8.0安装包

tar xvJf mysql-8.0.20-linux-glibc2.12-x86_64.tar.xz 

mysql

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)

目录不存在,安装提示创建目录

mysql

(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
操作成功的截图如下:
mysql

注意保存这里的初始密码,后面用于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 说明启动成功,效果图如下:

mysql
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密码
如果密码符合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;

操作截图如下:
mysql

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

mysql

如果是云服务器:
mysql

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'@'%';

注意:

  1. 授权之后需要用户重连MySQL,才能获取相应的权限。
  2. 用以上命令授权的用户不能给其它用户授权,如果想让该用户可以授权,用以下命令:
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:        [email protected]
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可以看到用户是[email protected], 连接方式为TCP/IP

4.2 不同版本的差别

测试方法就是看能不能连接,如果不想看测试过程可以拉到最后看结论

  1. 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:        [email protected]
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

  1. 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:        [email protected]
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

猜你喜欢

转载自blog.csdn.net/craftsman2020/article/details/128259334
今日推荐