--- title: "22-用户管理(DBA命令)" created: 2025-11-25 tags: - 项目筑基 --- # 用户管理(DBA命令) 创建登录名 `CREATE LOGIN 登录名 PASSWORD=’密码’` 创建数据库用户名 `CREATE USER 用户名 FOR LOGIN 登录名` 赋予操作权限 `GRANT 操作权限 ON 表名 TO 用户名` 回收操作权限 `REVOKE 操作权限 ON 表名 TO 用户名` 角色:事先定义好的一组权限 ## 新建用户 CREATE USER username IDENTIFIED BY 'password'; 说明:username——你将创建的用户名, password——该用户的登陆密码,密码可以为空,如果为空则该用户可以不需要密码登陆服务器. 例如: create user p361 identified by '123'; --可以登录但是只可以看见一个库 information\_schema ## 授权 ``` mysql> grant all privileges 增删改查的一个或者全部 on dbname.tbname 允许对哪些数据库、数据表 to 'username' 新用户的名字 @'login ip' 登入的ip identified by 'password' 密码 with grant option; 有无授权的权利 ``` 1) dbname=\*表示所有数据库 2) tbname=\*表示所有表 3) login ip=%表示任何ip 4) password 为空,表示不需要密码即可登录 5) with grant option; 表示该用户还可以授权给其他用户 ### 细粒度授权 首先以 root 用户进入 mysql 然后键入命令: ``` grant select,insert,update,delete 给增删改查的权利 on *.* 对全部数据库和表 to p361 用户名叫p361 @localhost 本机登入 Identified by "123"; 密码123 ``` 如果希望该用户能够在任何机器上登陆 mysql,则将 localhost 改为 "%"。  ### 粗粒度授权 测试用户一般使用该命令授权, ``` GRANT ALL PRIVILEGES ON *.* TO 'p361' @'%' /Identified by "123"; ``` 注意:用以上命令授权的用户不能给其它用户授权,如果想让该用户可以授权,用以下命令: ``` GRANT ALL PRIVILEGES ON *.* TO 'p361' @'%' Identified by "123" WITH GRANT OPTION; ``` ALL PRIVILEGES和给增删改查4个权限有啥区别? privileges 包括: 1)alter:修改数据库的表 2) create:创建新的数据库或表 3) delete:删除表数据 4) drop:删除数据库/表 5) index:创建/删除索引 6) insert:添加表数据 7) select:查询表数据 8) update:更新表数据 9) all:允许任何操作 10) usage:只允许登录 也就是说在grant后面可以跟这些字段 ## 回收权限 `revoke privileges on dbname[.tbname] from username;` revoke all privileges on \*.\* from p361; use mysql select \* from user 进入 mysql 库中 修改密码; update user set password = password('qwe') where user = 'p646'; 刷新权限; flush privileges --- ⬅️ [[21-视图|21-视图]] 🏠 [[00-数据库|00-数据库]] ➡️ [[23-存储引擎|23-存储引擎]]