MySQL用户、权限及密码操作

1 创建用户

1.1 create user

格式如下:

[sql]  view plain  copy
  1. CREATE USER 'username'@'hostname' IDENTIFIED BY 'password';  

其中,username为用户名;hostname为主机,localhost指本地用户,通配符%指可以从远程主机登陆用户,如果不指定host,则默认为%;password为密码,可以为空。

例如,创建用户名为user、密码为123456的用户,主机为本地,则

[sql]  view plain  copy
  1. CREATE USER 'user'@'localhost' IDENTIFIED BY '123456';  

创建用户名为user、密码为123456的用户,主机为192.168.1.1,则

[sql]  view plain  copy
  1. CREATE USER 'user'@'192.168.1.1' IDENTIFIED BY '123456';  

创建用户名为user、密码为123456的用户,则

[sql]  view plain  copy
  1. CREATE USER 'user' IDENTIFIED BY '123456';  

创建用户名为user,则

[sql]  view plain  copy
  1. CREATE USER user;  

注:这种方式需要登录mysql控制台,且登录用户需要CREATE USER权限。

1.2 insert into mysql.user

格式如下:

[sql]  view plain  copy
  1. INSERT INTO mysql.user(host, userpasswordVALUES(hostname, username, PASSWORD(password));  
  2. FLUSH PRIVILEGES;  

其中,mysql.user是在mysql库中存储用户信息的user表,hostname表示主机名(localhost指本地用户,通配符%指可以从远程主机登陆用户),第二个password是密码(第一个password是字段)。

例如,创建用户名为user、密码为123456的用户,则

[sql]  view plain  copy
  1. INSERT INTO mysql.user(host, userpasswordVALUES('localhost''user'PASSWORD('123456'));  
  2. FLUSH PRIVILEGES;  

注:因为这种方式是手动修改数据库,如果想要这种修改立马生效,还需执行FLUSH PRIVILEGES命令刷新用户权限列表,所以需要登录的用户有SELECT、UPDATE、RELOAD三种权限。

2 修改用户权限

2.1 为用户赋予权限

在MySQL中使用GRANT命令给用户授权,如果用户不存在,GRANT会自动创建用户,并进行授权。

格式如下:

[sql]  view plain  copy
  1. GRANT privileges ON databases.tablename TO 'username'@'hostname' [INDENTIFIED BY ‘password’];  

其中,privileges表示具体的权限名称,多个权限间通过逗号隔开;databases表示数据库,使用*表示所有数据库;tablename表示表名,使用*表示所有表;username表示用户名;hostname表示主机名;password表示密码,[]中用于创建用户时为用户添加密码。

2.2 常用权限

  • 表数据: select, update, delete, insert
  • 表结构: create, alert, drop
  • 外键: references
  • 创建临时表: create temporary tables
  • 操作索引: index
  • 视图: create view, show view
  • 存储过程: create routine, alert routine, execute
  • 所有权限: all

2.3 权限表

  • 存储过程权限表: mysql.procs_priv
  • 列权限表: mysql.columns_priv
  • 表格权限表: mysql.tables_priv
  • 用户权限表: informationschema.userprivileges(字段grantee为授权者, 字段privilege_type为权限名称)
  • 用户信息及权限: mysql.user(后缀为priv的字段的值与userprivileges的privilege_type一一对应)

2.4 查看用户权限

查看用户权限可以通过查询上面的权限表的数据进行查询,或者通过show grants命令进行查询,格式如下:

[sql]  view plain  copy
  1. SHOW GRANTS [FOR username@hostname]  

其中,username表示用户名,hostname表示主机名,[]中的内容可以省略,是查询当前登录用户的权限。

2.5 撤销权限

可以通过命令撤销某用户的某种权限,格式如下:

[sql]  view plain  copy
  1. REVOKE privileges ON databease.table FROM username@hostname  

撤销权限与赋予权限命令相似,区别在于将TO改为FROM。

3 修改用户密码

3.1 mysqladmin命令

格式如下:

[sql]  view plain  copy
  1. mysqladmin -u USER -p password NEW_PASSWORD  

其中,USER为用户名,NEW_PASSWORD为新密码。

该命令直接在命令行中执行,回车之后会提示输入原密码,输入正确后即可修改。

例如,设置用户user的密码为123456,原密码为654321,则

[sql]  view plain  copy
  1. mysqladmin -u user -p password 123456  
  2. Enter password:******  

注:上面的******是自己输入的654321。

3.2 SET PASSWORD 语句

格式如下:

[sql]  view plain  copy
  1. SET PASSWORD FOR username@hostname=PASSWORD('password');  

其中,username为用户名,hostname为指定的主机,password为新密码。

这种方式需要先登入mysql控制台,即通过正确用户名、密码登入。

例如:设置在localhost上的用户user的密码为123456,则

[sql]  view plain  copy
  1. SET PASSWORD FOR user@localhost=PASSWORD('123456');  

注:通过这种方式修改自己的密码,可以只有基本的USAGE权限;如果修改其他人的密码,需要对mysql数据库存在UPDATE权限。

3.3 UPDATE user 语句

格式如下:

[sql]  view plain  copy
  1. UPDATE mysql.user SET password=PASSWORD('password'WHERE user='username' and host='hostname';  
  2. FLUSH PRIVILEGES;  

其中,mysql.user表示mysql库中的user表,user表示字段为user,username为用户名,password为新密码,hostname为指定的主机。

这种方式需要先登入mysql控制台,即通过正确用户名、密码登入。

例如:设置用户user的密码为123456,则

[sql]  view plain  copy
  1. UPDATE mysql.user SET password=PASSWORD('123456'WHERE user='user' and host='localhost';  
  2. FLUSH PRIVILEGES;  

注:因为这种方式是手动修改数据库,如果想要这种修改立马生效,还需执行FLUSH PRIVILEGES命令刷新用户权限列表,所以需要登录的用户有SELECT、UPDATE、RELOAD三种权限。

4 删除用户

在mysql中,可以通过直接删除mysql.user表中的数据删除用户,也可以通过drop命令删除用户,与创建用户的操作类似。

4.1 DELETE FROM mysql.user

格式如下:

[sql]  view plain  copy
  1. DELETE FROM mysql.user WHERE user='username' and host='hostname'  

其中,mysql.user表示mysql库中的user表,user表示字段为user,username为用户名,hostname为指定的主机。

4.2 DROP USER username

格式如下:

[sql]  view plain  copy
  1. DROP USER 'username'@'hostname'  

其中,username为用户名,hostname为指定的主机。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值