MySQL用户管理
MySQL之用户管理#
创建用户#
create user username@host; 5.7.17 不允许 create user username@host identified by 'password'; @'%' @ip @'network'
说明:用户的信息保存在mysql数据库中的user表中,验证用户是否创建成功如下:
select user,host,password from mysql.user;
用户权限#
权限分类#
USAGE 无权限,只有登录数据库,只可以使用test或test_*数据库 ALL 所有权限 select/update/delete/super/slave/reload 指定的权限 with grant option 允许把自己的权限授予其它用户或者从其他用户收回自己的权限
作用范围#
*.* 全库、全表(mysql.user) mysql.* mysql库下所有表(某库中的所有表)(mysql.db) mysql.user mysql库中user表(单表)(mysql.table_priv) mysql.user.host mysql库中user表的host列(mysql.columns_priv)
主机登录权限#
user@localhost 表示user只能在本地通过socket登录服务器 user@192.168.0.1 表示user用户只能在192.168.0.1登录数据库服务器 user@192.168.0.0/255.555.255.0 指定某个子网的主机可以登录数据库 user@% 表示user用户能在所有的机器上登录数据库服务器
用户授权#
show grants; 查看用户权限 grant 权限 on 库.表 to 用户@主机 grant 权限(列1,列2,...) on 库.表 to 用户@主机 mysql> grant select on db01.* to 'jack'@'10.1.1.0/255.255.255.0'; mysql> flush privileges; mysql> grant update(name,math) on db01.t2 to 'jack'@'10.1.1.0/255.255.255.0'; Query OK, 0 rows affected (0.00 sec) mysql> flush privileges; mysql> grant all on *.* to 'zhang'@'10.1.1.254' identified by '123' mysql> flush privileges;
注意:从MySQL 5.7.6开始,不赞成使用grant修改密码。使用 ALTER USER来代替。 ALTER USER 'jeffrey'@'localhost' IDENTIFIED BY 'mypass'; ALTER USER USER() IDENTIFIED BY 'mypass'; 如果当前连接是匿名用户可以用该语句修改密码
权限的保存位置#
mysql.user 所有mysql用户的账号和密码,以及对用户对全库全表权限(*.*) mysql.db 非mysql库的授权都保存在此(db.*) mysql.table_priv 某库某表的授权(db.table) mysql.columns_priv 某库某表某列的授权(db.table.col1) mysql.procs_priv 某库存储过程的授权
回收权限:revoke#
mysql> revoke update,select on mysql.user from stu6@localhost; --撤消指定的权限 mysql> revoke all privileges,grant option from stu4@'%'; --撤消所有的权限
删除用户#
mysql> drop user user01@'localhost'; 删除用户 mysql> select user from mysql.user where user='user01'; 验证用户是否删除成功 mysql> drop user user; 默认删除该用户从任意主机登陆 mysql> rename user u01@'instructor.example.com' to u001@'localhost'; 重命名用户名 mysql> show grants; 查看用户权限 mysql> show grants for user02@'%'; 查看指定用户的权限 mysql> drop user ''@'rhel6.example.com'; 删除一个匿名用户 mysql> delete from mysql.user where user=''; 删除mysql中的匿名用户 mysql> delete from mysql.user where user='root' and host='::1'; mysql> flush privileges; 注意:如果tcp/ip登录,服务器端口不是默认3306,则需要加端口号 问题:可不可以给一个新的用户授权? 更改user02在所有机器上都能登录数据库. mysql> update mysql.user set host='%' where user='user02'; mysql> flush privileges;
作者:别来无恙-
出处:https://www.cnblogs.com/yanjieli/p/9789889.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· AI与.NET技术实操系列(六):基于图像分类模型对图像进行分类