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

news2024/11/20 23:18:37

文章目录

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/80383.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

蜂鸟学习笔记E203(七)——写回、存储器和ICB总线

一、 蜂鸟E203处理器的写回硬件实现 核心思想如下 将指令划分为单周期指令和长指令两大类将长指令的交付和写回分开,使得即使执行力多周期的长指令也不会阻塞流水线,妨碍单指令 主要包含最终写回仲裁、长指令写回仲裁 最终写回仲裁 长指令的写回比…

Python的数据结构- 序列(sequence)

数据结构 - 序列(sequence) 序列的一个特点就是根据索引(index,即元素的位置)来获取序列中的元素,第一个索引是 0,第二个索引是 1,以此类推。 所有序列类型都可以进行某些通用的操作…

ChatGPT教我面试

​持续坚持原创输出,点击蓝字关注我吧 最近ChatGPT爆火,ChatGPT能干什么呢?想必已经看过很多文章了,例如ChatGPT通过美国高考、ChatGPT开发游戏、调试代码、写文章等等。 哈哈,作为一个软件测试博主,我怎么…

frp内网穿透SSH

参考博客: 博客1(推荐): https://sspai.com/post/52523 博客2: https://blog.csdn.net/qq_36981760/article/details/115713179 博客3: https://blog.csdn.net/qq_36981760/article/details/115713179 参考视频 (推荐,比较详细): https://www.bilibili.com/video/BV…

谈谈inline(内联函数)

目录1、例子抛出2、 了解inline2.1 宏替换的副作用2.2 内联函数2.3 有意思的点3、总结4、 感谢您的阅读!1、例子抛出 我们知道可以用宏定义来代替一个变量或者函数块: #define A 20 #define MYFUNC(a,b) ((a) > (…

Kubernetes双主集群的部署(二)

Kubernetes单主集群的部署(一)_Evens7xxX的博客-CSDN博客 上期完成了单主架构集群的部署,本期将在单主架构的基础上添加Master和负载均衡器 目录 二、k8s双主架构集群的部署 1.另一台Master同样做初始化配置 2.配置 Master02 3.配置负载均…

算法与数据结构31:DC3算法生成后缀数组

算法与数据结构31:DC3算法生成后缀数组什么是后缀数组引出DC3算法DC3算法具体实现DC3算法模板DC3模板的用法一个可以使用DC3的题什么是后缀数组 假设有字符串 aabaabaa 那么从每个位置开始,到结尾位置,截取后缀串,可得 a aa baa …

四面阿里巴巴如愿拿到offer定级P7,为此我筹备了半年

前言 每个程序员都有一个大厂的梦,而互联网大厂首当其冲自然是阿里巴巴最吃香,今天小编就来分享一个小伙进阿里巴巴的面经! “不想进大厂的程序员不是好程序员”哈哈哈 春节过后,本是金三银四之际,大部分人也都准备好…

【RealSense】L515学习记录

Intel RealSense™ SDK 2.0的安装 1、注册服务器的公钥: sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-key F6E65AC044F831AC80A06380C8B3A55A6F3EFCDE || sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-key F6E65AC044F831AC80A06380C8…

ChatGPT:chatGPT本地部署、运行和接口调用

文章目录从 github 下载环境配置conda 创建虚拟环境官方步骤配置环境安装 revChatGPT更改 config.json.example -> config.json将 config.json 移动到 revChatGPT 路径下cookie 信息写入 config.json方式1:使用账号密码作为登录的方法方式2: 使用 ses…

软件测试期末测试题及解析(五套试题共两万余字)

软件测试期末考试复习题题目软件测试期末考试复习题(一)一、单项选择题:二、判断题:三、简答题期末考试复习题(二)一、单项选择题:二、判断题:三、简答题期末考试复习题(…

并查集最重要的优化:路径压缩

本文章将直接讲解优化,对并查集还不理解或忘记的同学可以看以下两篇文章 并查集基础 优化:启发式合并 先赞后看好习惯 今天我们要来说另一种对并查集的优化:路径压缩 也许有些同学看了启发式合并会说:其实优化的也不多啊&…

定时器: Timer (Java)

定时器: Timer一、定时器是什么二、标准库中的定时器三、实现定时器3.1 定时器的构成3.2 实现细节3.3 完整代码一、定时器是什么 定时器也是软件开发中的一个重要组件。类似于一个 “闹钟”,即达到一个设定的时间之后,就执行某个指定好的代码。 定时器…

收藏 | 自然语言处理(NLP)数据集汇总(附下载链接)

🎄🎄【自然语言处理NLP】简介 🎄🎄 自然语言处理(Natural Language Processing, NLP)是计算机科学领域与人工智能领域中的一个重要方向。它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法。自然语言处理是一门…

自制CPU

CPU是计算机的核心部件,其发展历程就是人类文明的发展史。 随着计算机技术的不断发展, CPU也从一开始的功能简单,到现在已经变成功能强大、应用广泛的芯片。 但要想更深入了解 CPU,你需要知道它是如何工作以及为什么这么做的。 你…

数据结构003:有效的数独

原文链接:数据结构003:有效的数独 题目 请你判断一个 9 x 9 的数独是否有效。只需要 根据以下规则 ,验证已经填入的数字是否有效即可。 数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3…

Lecture7:随机梯度下降算法问题及解决、dropout正则化、学习率的选择、迁移学习

目录 1.随机梯度下降算法问题及解决 1.1 随机梯度下降算法SGD的问题 1.2 具有动量的梯度下降算法SGDMomentum 1.3 Nesterov加速梯度法 1.4 AdaGrad 1.5 RMSProp 1.6 融合!Adam算法 2. 学习率的选取 3. 正则化 3.1 dropout正则化 4. 迁移学习 1.随机梯度下…

一篇文章带你了解python数据分析岗位怎么样

前言 嗨喽,大家好呀~这里是爱看美女的茜茜呐 又到了学Python时刻~ 分析目标 各城市对数据分析岗位的需求情况 不同细分领域对数据分析岗的需求情况 数据分析岗位的薪资状况 工作经验与薪水的关系 公司都要求什么掌握什么技能 岗位的学历要求高吗 不同规模的…

详解C语言中的自定义类型(结构体,枚举,联合)

目录 1. 结构体 1.1 结构的声明 1.2 结构的自引用 1.3 结构体变量的定义和初始化 1.4 结构体内存对齐 (计算结构体的大小) 1.5 结构体传参 2. 位段(结构体实现位段) 2.1 什么是位段 2.2 位段的内存分配 2.3 位段的跨平台问题 3. 枚举 …

node.js-http模块学习

目录 1.什么是 http 模块 2.进一步理解 http 模块的作用 3.用node.js创建最基本的 web 服务器 req 请求对象: res 响应对象: 解决中文乱码问题: 根据不同的url响应 不同的html页面 1.什么是 http 模块 http 模块是 Node.js 官方提供的、…