Mysql数据库中的用户管理与授权

ddl: create drop alter

dml:对数据进行管理update insert into delete truncate

dql:查询语句 select

dcl:权限控制语句grant revoke

创建用户

create user '用户名'@'主机' identified by '密码'

加密

  1. SELECT PASSWORD('密码'); #先获取加密的密码

  2. CREATE USER 'lisi'@'localhost' IDENTIFIED BY PASSWORD '加密的密码';

查看当前登录的用户

select user();

赋权

grant all privileges on *.* to 'ky32'@'localhost' identified by '123456';

grant 赋权的开头语句

all privileges赋予所有权限

on*.*对所有库都有操作权限

on kgc.*只能对指定的库进行操作。

to 'ky32'@'192.168.233.22'赋权给哪个用户

identified by'123456';使用哪个密码进行登录。创建用户的时候不写,密码为空。

show grants for 'ky32'@'localhost';

删除权限和权限控制

对存在用户进行授权

GRANT 权限列表 ON 数据库名.表名 TO '用户名'@'来源地址' IDENTIFIED BY '密码';

对不存在的用户进行创建并授权

GRANT ALL PRIVILEGES ON *.* TO '用户名'@'来源地址' IDENTIFIED BY '密码';

多权限,重命名

删除用户

修改密码

set password = password ('新密码');

root修改其他用户密码

set password for '用户'@'登录地址' =password ('密码');

root密码的忘记后的修改找回方法

该操作必须是在数据库本机且为root用户,才可进行

第一步:添加跳过的初始配置

  1. vim /etc/my.cnf

  2. skip-grant-tables

第二步:重启数据库服务 ,修改数据库用户表中root密码

systemctl restart mysql.service

mysql

mysql> UPDATE mysql.user SET AUTHENTICATION_STRING = PASSWORD('123123') where user='root';

mysql> flush privileges;#刷新数据库

mysql> quit#退出

第三步:登录测试新密码

mysql -u root -p123123

第四步:撤销添加的免密码认证设置,重启数据库服务

  1. #删除配置文件中的配置,之后重启服务。

  2. 注意:最后再把/etc/my.conf 配置文件里的skip-grant-tables 删除,并重启mysql服务。

  3. vim /etc/my.cnf

  4. systemctl restart mysqld.service

查看用户已有权限的操作

SHOW GRANTS;

总结

用户管理操作

1.create user 'username'@'address' identified by 'password'; #创建用户 ​

2.select user,host,authentication_string from mysql.user; #查看用户信息 ​

3.rename user old_user to new_user; #修改用户名 ​

4.drop user '用户名'@'来源地址'; #删除用户 ​

5.set password = password('XXXX'); #修改当前登录用户的密码 ​

6.set password for '用户名'@'来源地址' = password('XXXX'); #修改其他用户的密码 ​

7.select user (); #查看当前登录用户和来源地址 ​

8.忘记root用户密码的解决方法:

修改mysql配置文件/etc/my.cnf,在 mysqld 配置项下加入 skip-grant-tables

service mysqld restart #重启服务

mysql #免密登陆

update mysql.user set authentication_string=password('新密码') where user='root';

#修改密码 flush privileges; #刷新数据库

用户授权操作

1.grant 权限列表/ALL ON 库名.表名 to 'username'@'address' identified by '密码'; ​ #授予用户权限

2.show grants; #查看当前用户(自己)的权限

3.show grants for 'username'@'address'; #查看其他用户的权限 ​

4.revoke 权限列表/ALL on 库名.表名 from 'username'@'address'; #撤销用户的权限 ​

5.mysql -u 用户名 -p密码 -h 目标IP/主机名 -P 端口号 #远程连接mysql

索引

索引的作用:

1、利用索引数据库可以快速定位,大大加快查询速度,主要作用

2、表的数据很多,查询需要关联多个表,这个时候索引也可以提高查询速度

3、加快表与表之间的连接速度

4、使用分组和排序时,可以大大减少时间

5、提高数据库恢复数据时的速度。

索引创建的原则:

1、有索引,数据会先进行索引查询,然后定位数据,索引使用不当,反而会增加数据库的负担。

2.主键,外键必须有索引(创建好了主键和外键自动就是索引,不需要额外声明)

3.一个表超过了300行记录,必须要有索引,否则数据库会遍历表的所有数据。

4.互相之间有关联的表,在这个关联字段应该设置索引

5.唯一性太差的字段,不适合创建索引更新太频繁的字段,不适合做索引。

6.经常被where条件匹配的字段,尤其是表数据比较多的,应该创建索引。

7.在经常进行group by(分组)order by(排序)的字段上要建立索引。

8.索引的列的字段越小越好,长文本的字段,不适合建立索引。

索引的类型:

1.B-树索引 BTREE

树形结构的索引,也是大部分数据库的默认索引类型。

根节点:树的最顶端的分支节点

分支节点:指向索引里其他的分支节点,也可以是叶子节点

叶子节点:直接指向表里的数据行

2.哈希索引:散列索引

把任意长度的输入,通过散列算法变换成固定长度的输出。

散列值...分别对应数据里的列和行

mysqI的默认引擎:INNODB默认的索引类型就是Btree。

MEMORY 引擎可以支持HASH,也是他的默认索引。

先算散列值,然后对应,速度比较慢,比btree慢。

hash的索引匹配:=in () <=>

相关推荐
老纪的技术唠嗑局1 小时前
超级干货分享:中小企业使用 OceanBase 实践经验汇总
数据库
CLOUD ACE1 小时前
谷歌云代理|零售商Target 如何利用 Spanner Graph 提升零售发现体验并将数据库维护成本降低 50%
数据库·零售
AI大模型-小雄2 小时前
Codex写分页接口为什么越翻越慢?用Cursor Pagination解决重复与漏数据
大数据·数据库·elasticsearch·搜索引擎·chatgpt·后端开发·codex
少晓年2 小时前
从 MySQL 迁移到人大金仓 KingbaseES:完整指南与实践
数据库·mysql
SelectDB3 小时前
Apache Doris AI RAG 实战:从基础 RAG 到知识图谱增强的技术能力与选型
数据库
SelectDB3 小时前
电商企业 PostgreSQL 迁移 Apache Doris:80TB 分析数据统一平台技术能力与实践
数据库
SelectDB3 小时前
阶跃星辰 Agent 可观测:Apache Doris / SelectDB 的技术能力与实践
数据库
SelectDB3 小时前
ApacheDoris Iceberg V3 湖仓 DML:Apache Doris / SelectDB 的技术能力与实践
数据库
SelectDB3 小时前
ApacheDoris Python UDF:SQL 调用 Python 的技术能力、选型对比与实践
数据库
Crazy________4 小时前
Redis03:持久化存储,大key分析,主从复制及哨兵模式
数据库·redis·容器