Linux中mysql的安装|配置|操作|卸载
创始人
2024-04-21 14:23:27
0

文章目录

      • 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)


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 wrapperConnection 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 wrapperConnection 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 不同版本的差别

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

  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:        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

  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 wrapperConnection 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 wrapperConnection 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

相关内容

热门资讯

【MySQL】锁 锁 文章目录锁全局锁表级锁表锁元数据锁(MDL)意向锁AUTO-INC锁...
【内网安全】 隧道搭建穿透上线... 文章目录内网穿透-Ngrok-入门-上线1、服务端配置:2、客户端连接服务端ÿ...
GCN的几种模型复现笔记 引言 本篇笔记紧接上文,主要是上一篇看写了快2w字,再去接入代码感觉有点...
数据分页展示逻辑 import java.util.Arrays;import java.util.List;impo...
Redis为什么选择单线程?R... 目录专栏导读一、Redis版本迭代二、Redis4.0之前为什么一直采用单线程?三、R...
【已解决】ERROR: Cou... 正确指令: pip install pyyaml
关于测试,我发现了哪些新大陆 关于测试 平常也只是听说过一些关于测试的术语,但并没有使用过测试工具。偶然看到编程老师...
Lock 接口解读 前置知识点Synchronized synchronized 是 Java 中的关键字,...
Win7 专业版安装中文包、汉... 参考资料:http://www.metsky.com/archives/350.htm...
3 ROS1通讯编程提高(1) 3 ROS1通讯编程提高3.1 使用VS Code编译ROS13.1.1 VS Code的安装和配置...
大模型未来趋势 大模型是人工智能领域的重要发展趋势之一,未来有着广阔的应用前景和发展空间。以下是大模型未来的趋势和展...
python实战应用讲解-【n... 目录 如何在Python中计算残余的平方和 方法1:使用其Base公式 方法2:使用statsmod...
学习u-boot 需要了解的m... 一、常用函数 1. origin 函数 origin 函数的返回值就是变量来源。使用格式如下...
常用python爬虫库介绍与简... 通用 urllib -网络库(stdlib)。 requests -网络库。 grab – 网络库&...
药品批准文号查询|药融云-中国... 药品批文是国家食品药品监督管理局(NMPA)对药品的审评和批准的证明文件...
【2023-03-22】SRS... 【2023-03-22】SRS推流搭配FFmpeg实现目标检测 说明: 外侧测试使用SRS播放器测...
有限元三角形单元的等效节点力 文章目录前言一、重新复习一下有限元三角形单元的理论1、三角形单元的形函数(Nÿ...
初级算法-哈希表 主要记录算法和数据结构学习笔记,新的一年更上一层楼! 初级算法-哈希表...
进程间通信【Linux】 1. 进程间通信 1.1 什么是进程间通信 在 Linux 系统中,进程间通信...
【Docker】P3 Dock... Docker数据卷、宿主机与挂载数据卷的概念及作用挂载宿主机配置数据卷挂载操作示例一个容器挂载多个目...