Mysql数据库中的用户管理与授权-CSDN博客
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
ddl: create drop alter
dml对数据进行管理update insert into delete truncate
dql:查询语句 select
dcl:权限控制语句grant revoke
创建用户
create user '用户名'@'主机' identified by '密码'
加密
-
SELECT PASSWORD('密码'); #先获取加密的密码
-
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用户才可进行
第一步添加跳过的初始配置
-
vim /etc/my.cnf
-
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
第四步撤销添加的免密码认证设置重启数据库服务
-
#删除配置文件中的配置之后重启服务。
-
注意最后再把/etc/my.conf 配置文件里的skip-grant-tables 删除并重启mysql服务。
-
vim /etc/my.cnf
-
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 () <=>