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
相关推荐
SimonKing1 小时前
将cURL 命令直接变成 Java 代码?用JQuick-Curl搞起来
java·后端·程序员
IT大白鼠1 小时前
MySQL 分布式集群系列 · 第二篇:架构深度拆解--NDB 三大核心节点
分布式·mysql·架构
亮工硬件1 小时前
1-8 简易串口通讯协议(UART + 自定义帧协议)
笔记·stm32·单片机·嵌入式硬件·学习
像风一样的男人@1 小时前
linux --安装openGL,EGL/OSMesa
linux·运维·服务器
老猿讲编程1 小时前
【Eclipse OpenSOVD学习之二】 SOVD 协议原理与标准背景
学习·eclipse·嵌入式软件·车载·sovd
凤山老林1 小时前
企业级文件服务中台:Spring Boot 集成 MinIO 实现分片存储、生命周期管理与多租户隔离
java·spring boot·后端·minio·文件服务
青山木1 小时前
Hot 100 --- 买卖股票的最佳时机
java·数据结构·算法·leetcode·贪心算法
程序员良辰1 小时前
Eclipse Memory Analyzer(MAT)入门教程:从生成 Heap Dump 到定位 Java 内存问题
java·ide·eclipse·tomcat·idea
ZzzZZzzzZZZzzzz…1 小时前
K8s---组件
运维·云原生·容器·kubernetes·k8s·k8s组件