33-Linux学习之旅之MySQL用户管理

Linux学习之旅之MySQL用户管理

一、用户基础知识

bash 复制代码
完整用户名格式:'用户名'@'主机地址'

MySQL 用户不是单靠名字,用户名 + 主机 组合才是唯一账号
主机 说明
'root'@'localhost' 只能本机登录,127.0.0.1,不允许外网
'user1'@'192.168.1.100' 只能从这个 IP 登录
'user1'@'192.168.1.%' 192.168.1 网段所有机器,% 通配符
'user1'@'%' 任意 IP 都可以远程登录
bash 复制代码
mysql> select Host,User from mysql.user;
+-----------+------------------+
| Host      | User             |
+-----------+------------------+
| localhost | mysql.infoschema |
| localhost | mysql.session    |
| localhost | mysql.sys        |
| localhost | root             |
+-----------+------------------+
4 rows in set (0.01 sec)


mysql> select user();
+----------------+
| user()         |
+----------------+
| root@localhost |
+----------------+
1 row in set (0.00 sec)

二、用户管理

1、创建用户

bash 复制代码
mysql> create user 'xyx'@'10.0.0.%' identified by 'Xyx@123456';
Query OK, 0 rows affected (0.11 sec)

mysql> select host,user from mysql.user;
+-----------+------------------+
| host      | user             |
+-----------+------------------+
| 10.0.0.%  | xyx              |
| localhost | mysql.infoschema |
| localhost | mysql.session    |
| localhost | mysql.sys        |
| localhost | root             |
+-----------+------------------+
5 rows in set (0.01 sec)

2、修改用户

bash 复制代码
mysql> rename user 'xyx'@'10.0.0.%' to 'xyx'@'%';
Query OK, 0 rows affected (0.02 sec)

mysql> select host,user from mysql.user;
+-----------+------------------+
| host      | user             |
+-----------+------------------+
| %         | xyx              |
| localhost | mysql.infoschema |
| localhost | mysql.session    |
| localhost | mysql.sys        |
| localhost | root             |
+-----------+------------------+
5 rows in set (0.01 sec)

3、删除用户

bash 复制代码
mysql> drop user 'xyx'@'%';
Query OK, 0 rows affected (0.01 sec)

mysql> select host,user from mysql.user;
+-----------+------------------+
| host      | user             |
+-----------+------------------+
| localhost | mysql.infoschema |
| localhost | mysql.session    |
| localhost | mysql.sys        |
| localhost | root             |
+-----------+------------------+
4 rows in set (0.00 sec)

4、修改密码

bash 复制代码
mysql> create user 'xyx'@'10.0.0.%' identified by 'Xyx@123456';
Query OK, 0 rows affected (0.02 sec)

mysql> select host,user from mysql.user;
+-----------+------------------+
| host      | user             |
+-----------+------------------+
| 10.0.0.%  | xyx              |
| localhost | mysql.infoschema |
| localhost | mysql.session    |
| localhost | mysql.sys        |
| localhost | root             |
+-----------+------------------+
5 rows in set (0.00 sec)

mysql> alter user 'xyx'@'10.0.0.%' identified by 'Xyx@1234';
Query OK, 0 rows affected (0.02 sec)

三、权限管理

1、权限对比

bash 复制代码
#root用户
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| db1                |
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.02 sec)

#未授权普通用户xyx
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| performance_schema |
+--------------------+
2 rows in set (0.02 sec)


mysql> create database db2;
ERROR 1044 (42000): Access denied for user 'xyx'@'10.0.0.%' to database 'db2'
mysql>

2、授权

bash 复制代码
#grant 权限列表 on 库.表 to '用户名'@'主机';
mysql> grant all on *.* to 'xyx'@'10.0.0.%';
Query OK, 0 rows affected (0.02 sec)

#授权后
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| db1                |
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.01 sec)


#此时用户xyx没有授权权限
mysql> create user 'myy'@'%' identified by 'Myy@1234';
Query OK, 0 rows affected (0.02 sec)

mysql> grant all on *.* to 'myy'@'%';
ERROR 1045 (28000): Access denied for user 'xyx'@'10.0.0.%' (using password: YES)

#权限授权后

mysql> grant all on *.* to 'xyx'@'10.0.0.%' with grant option;
Query OK, 0 rows affected (0.02 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)

mysql> grant all on *.* to 'myy'@'%';
Query OK, 0 rows affected (0.03 sec)


#取消授权
mysql> revoke all on *.* from 'myy'@'%';
Query OK, 0 rows affected (0.01 sec)

四、索引

1、索引是什么

bash 复制代码
#索引就是数据库给表建立的「目录」,作用是加快查询速度,代价是占用磁盘空间、减慢增删改 (INSERT/UPDATE/DELETE) 速度。

#InnoDB是最常用存储引擎,索引底层是 B+ Tree
特点:
--所有数据都存在叶子节点
--叶子节点用链表相连,范围查询非常快
--非叶子节点只存索引键,不存真实数据,树高度很低,查询磁盘 IO 少

2、创建与删除索引

bash 复制代码
mysql> create index username on stu(name);
Query OK, 0 rows affected (0.05 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> desc stu;
+--------+------------------+------+-----+---------+----------------+
| Field  | Type             | Null | Key | Default | Extra          |
+--------+------------------+------+-----+---------+----------------+
| id     | int unsigned     | NO   | PRI | NULL    | auto_increment |
| name   | char(30)         | YES  | MUL | NULL    |                |
| mobile | char(11)         | YES  |     | NULL    |                |
| age    | tinyint unsigned | YES  |     | 18      |                |
| is_del | tinyint(1)       | YES  |     | 1       |                |
+--------+------------------+------+-----+---------+----------------+
5 rows in set (0.00 sec)


mysql> show index from stu\G
*************************** 2. row ***************************
        Table: stu
   Non_unique: 1
     Key_name: username
 Seq_in_index: 1
  Column_name: name
    Collation: A
  Cardinality: 9
     Sub_part: NULL
       Packed: NULL
         Null: YES
   Index_type: BTREE
      Comment:
Index_comment:
      Visible: YES
   Expression: NULL
2 rows in set (0.00 sec)

mysql> drop index username on stu;
Query OK, 0 rows affected (0.01 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> show index from stu\G
*************************** 1. row ***************************
        Table: stu
   Non_unique: 0
     Key_name: PRIMARY
 Seq_in_index: 1
  Column_name: id
    Collation: A
  Cardinality: 9
     Sub_part: NULL
       Packed: NULL
         Null:
   Index_type: BTREE
      Comment:
Index_comment:
      Visible: YES
   Expression: NULL
1 row in set (0.00 sec)

mysql> desc stu;
+--------+------------------+------+-----+---------+----------------+
| Field  | Type             | Null | Key | Default | Extra          |
+--------+------------------+------+-----+---------+----------------+
| id     | int unsigned     | NO   | PRI | NULL    | auto_increment |
| name   | char(30)         | YES  |     | NULL    |                |
| mobile | char(11)         | YES  |     | NULL    |                |
| age    | tinyint unsigned | YES  |     | 18      |                |
| is_del | tinyint(1)       | YES  |     | 1       |                |
+--------+------------------+------+-----+---------+----------------+
5 rows in set (0.00 sec)

五、环境变量和属性

1、变量种类

变量类型 符号 / 关键字 作用范围 生命周期 修改后是否永久
全局变量 @@global.变量名 所有新的客户端连接 MySQL 服务运行期间,重启失效 ❌临时 set 修改会丢失;写到 my.cnf 才永久
会话变量 @@session.变量名 / @@local.变量名 仅当前这一个数据库连接 断开连接立刻消失 ❌断开就失效
用户自定义变量 @变量名 当前会话连接 断开连接立刻消失 ❌断开就失效

2、查看变量

bash 复制代码
mysql> show variables like "log%";
+----------------------------------------+----------------------------------------+
| Variable_name                          | Value                                  |
+----------------------------------------+----------------------------------------+
| log_bin                                | ON                                     |
| log_bin_basename                       | /var/lib/mysql/binlog                  |
| log_bin_index                          | /var/lib/mysql/binlog.index            |
| log_bin_trust_function_creators        | OFF                                    |
| log_error                              | /var/log/mysql/error.log               |
| log_error_services                     | log_filter_internal; log_sink_internal |
| log_error_suppression_list             |                                        |
| log_error_verbosity                    | 2                                      |
| log_timestamps                         | UTC                                    |
+----------------------------------------+----------------------------------------+
20 rows in set (0.00 sec)

mysql> SELECT @@global.max_connections;
+--------------------------+
| @@global.max_connections |
+--------------------------+
|                      151 |
+--------------------------+
1 row in set (0.00 sec)

3、修改全局变量

bash 复制代码
mysql> set global max_connections=2000;
Query OK, 0 rows affected (0.00 sec)

mysql> select @@global.max_connections;
+--------------------------+
| @@global.max_connections |
+--------------------------+
|                     2000 |
+--------------------------+
1 row in set (0.00 sec)

4、修改会话变量

bash 复制代码
mysql> select @@session.autocommit;
+----------------------+
| @@session.autocommit |
+----------------------+
|                    1 |
+----------------------+
1 row in set (0.00 sec)

mysql> select @@session.autocommit;
+----------------------+
| @@session.autocommit |
+----------------------+
|                    0 |
+----------------------+
1 row in set (0.00 sec)

5、自定义变量

bash 复制代码
mysql> select @@session.autocommit;
+----------------------+
| @@session.autocommit |
+----------------------+
|                    0 |
+----------------------+
1 row in set (0.00 sec)

mysql> set @xyx='XYX';
Query OK, 0 rows affected (0.00 sec)

mysql> select @xyx;
+------+
| @xyx |
+------+
| XYX  |
+------+
1 row in set (0.00 sec)


root@MySQL-13:/etc/mysql# pwd
/etc/mysql
root@MySQL-13:/etc/mysql# ls
conf.d  my.cnf mysql.conf.d
相关推荐
白杨尚青6 分钟前
C++入门篇(十):string(上)——认识string:构造与三大遍历(一条龙讲透operator[]、迭代器、auto、范围for)
java·开发语言·c++·笔记·stl
FlightYe10 分钟前
视界原理之2D视频(二):视频文件里有什么
android·linux·网络·c++·ffmpeg·音视频·aac
传奇开心果编程17 分钟前
【Flutter入门练中学】第8课:动画与过渡
android·学习·flutter·ui·ios
anew___20 分钟前
《从零手写操作系统 (11):文件系统初探——initrd与VFS抽象层》
java·javascript·算法
天天向上29122 分钟前
Spring AI 实战:14 个踩坑记录,其中一个让我的测试全绿但产品是坏的
java·开源
正在走向自律31 分钟前
从只写接口到独立交付前后端,飞算JavaAI能给Java后端工程师多少溢价?
java·springboot·ai编程·全栈开发·java求职·飞算javaai·金九银十
LBL122042 分钟前
内网容器部署FTP日志监控服务
运维·服务器·容器
志栋智能44 分钟前
超自动化巡检:驱动持续改进的运维飞轮
运维·自动化
海宇大数据1 小时前
零信任架构实战:基于海宇学历核验版构建自动化风控审查网关
运维·人工智能·架构·自动化
a努力。1 小时前
LangChain Agent消息链路全解析
java·前端·javascript