MySQL用户管理

15 篇文章 0 订阅

1. 用户

操作数据库的时候和使用Linux一样,不建议直接使用root,使用普通用户权限,这样更加安全

1.1 用户信息

mysql数据库下,这个库里面会自带各种表

image-20240519102641438

里面user表里面,就记录了用户信息

  • **host:**用户可以从哪个主机登录,localhost表明只能从本机登录
  • **user:**用户名
  • authentication_stringpassword函数加密之后的

所谓的新增、删除、修改用户信息,就是在这个表里面增删查改

1.2 创建用户

语法:

create user '用户名'@'登录主机/IP' identified by '密码'

本机登录:

image-20240519104352869

如果出现报错:

ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement

采用flush privileges刷新权限,创建完毕之后也可以刷新一下,保证是有效的

image-20240519104822294

任意主机登录:

由于设置的是localhost,所以只能本地登录

如果想设置任意主机登录,采用%

create user 'pyh'@'%' identified by '111222';

Windows的IP是私有IP,经过多次路由转发之后,源地址就不再有效了,所以直接用%,表明任意主机

但是这个操作一般是禁止的,太危险了

设置密码的操作,mysql命令行一般不会记录下来,即往上翻是翻不到的

Windows登录:

image-20240519114241854

1.3 删除用户

语法:

drop user '用户名'@'主机名'

image-20240519110411418

1.4 修改密码

语法

自己设置自己的密码:

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

root用户修改指定用户密码:

set password for '用户名'@'主机名'=password('新密码');

本质上就是update

update user set authentication_string=password('112233');

2. 数据库权限

2.1 给用户权限

新创建的用户,是没有任何权限的,需要给用户授权

语法:

grant 权限列表 on 库.对象名 to '用户名'@'登录主机' [identified by '密码']

权限列表用逗号,隔开

grant select on ...
grant select, delete, create on ...
grant all [privileges] on *.* to ...	#赋予所有权限,所有的库所有的表

image-20240519121832954

查看赋予了哪些权限:

mysql> show grants for 'pyh'@'localhost';
+--------------------------------------------------------------+
| Grants for pyh@localhost                                     |
+--------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'pyh'@'localhost'                      |
| GRANT ALL PRIVILEGES ON `rootDB`.`user` TO 'pyh'@'localhost' |
+--------------------------------------------------------------+
2 rows in set (0.00 sec)

这里给了所有权限

2.2 回收权限

语法:

revoke 权限列表 on 库.对象名 from '用户名'@'登陆位置';

image-20240519122520458

再次查看赋予的权限:

mysql> show grants for 'pyh'@'localhost';
+-----------------------------------------------------------------------------------------------------------------------------------------------+
| Grants for pyh@localhost                                                                                                                      |
+-----------------------------------------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'pyh'@'localhost'                                                                                                       |
| GRANT SELECT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE VIEW, SHOW VIEW, TRIGGER ON `rootDB`.`user` TO 'pyh'@'localhost' |
+-----------------------------------------------------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)

insert权限被回收

移除所有权限:

image-20240519123352421

3. 跳过权限验证

如果忘记root的密码,在/etc/my.cnf配置文件下,可添加skip-grant-tables

然后重启mysql服务即可

systemctl stop mysqld
systemctl start mysqld

之后登录就可以跳过权限验证(不是很建议这样做)

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

加法器+

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值