管理MYSQL数据库user的操作

本文详细介绍了MySQL数据库的用户管理,包括创建、修改、删除用户账户以及管理用户权限。创建用户时,可以指定用户名、主机名和密码,并通过`CREATE USER`语句实现。修改用户账户涉及用户名和密码的变更,使用`RENAME USER`和`SET PASSWORD`命令。删除用户则有`DROP USER`和直接修改授权表两种方式。权限管理中,`GRANT`用于授予权限,`REVOKE`用于撤销权限,确保了数据库的安全访问。同时,文章强调了权限设置的重要性,如`GRANT ALL`、`GRANT SELECT, UPDATE...`等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

管理MYSQL数据库

  • MYSQL允许授权用户连接到MYSQL服务器 可以访问和操作数据库的数据
  • 用户需要有效的用户账户。
  • 你需要创建此类用户账户、授权他们一些权限、 重命名账户和密码、定期删除一些账户///等等操作

创建用户账号

  • 根据用户名和主机定义。可能跟密码相关联

  • 主机名是用户连接到数据库的机器。用户名+主机=账户名

初始用户集: 是在系统安装MYSQL时 自动创建的用户。

  1. Superuser account:超级用户 ——>root用户。就是你自己
  2. Anonymous accounts: 匿名用户。

创建新的用户:

  1. create user

    • 账户名 = ‘用户名’@‘主机名’

    • 如果没有@主机 **则默认是’%‘ ** 就是用户可以通过任何主机连接到mysql服务器。

      localhost表示本机

    • 密码可有可无。 设密码后会自动加密。

    • 默认这个用户没有任何权限

    /*语法*/
   create user 账户名 【identified by 密码】
  /*三个例子*/
-- 第一种创建用户带主机名和密码
create user 'chang'@'localhost' identified by '123';
-- 第二种 创建用户不带主机
create user 'jia' identified by '123';
-- 第三种 可以没有密码
create user 'le'@'localhost';

可以使用如下语句查看用户

-- 查看用户详细信息
select * from mysql.user;
-- 查看用户表的属性
describe mysql.user;
  1. insert

    • 可以直接在授权表中插入user信息创建账户

    • 要注意执行 flush privileges 重新加载所以授权表。

      目的是永久储存对授权表所做的更改。

      如果insert后 没有立即执行, 则不会反映更改信息 直到重启mysql才可以。

    • 十分麻烦 没有create好用

-- 要写明列和插入的值 没有默认值的列在插入时必须规定值
insert into mysql.user(host, user, ssl_type, ssl_cipher, x509_issuer, x509_subject, authentication_string)
values('localhost', 'j', '', '', '', '', '123');

修改用户账户和密码

  • 为了保护数据安全 需要经常更改用户的名字 和密码
  1. 更改用户的账户

    rename to 可以更改用户名字和主机名

    注意如果用户有确定的主机 则必须带主机名字

    /*语法*/
    rename olduser to newuser;
    
    -- to用户名如果不带@主机 则默认改为%  
    -- 完整的应该是 Username@Host 但是因为jia没有确定的主机 所有不需要@
    rename user 'jia' to 'j'@'localhost';
    
  2. 更改密码

    • set password
      • 可以为账户设置新密码 和 修改密码
      • 如果没有指定哪个账户 则默认是当前账户
      • 密码会自动加密
    • update
      • 不能为没有密码的更改密码。
      • 直接在授权表中修改
      • 修改的密码不会加密
    -- 改变用户密码 两种方式
    -- 第一种更加安全 for...是可选句子 也可以不指定 直接 =
    set password for 'jia'@'localhost'='12345';
    -- 密码不会加密
    update mysql.user set authentication_string='123'
    where User='jia' and Host='localhost';
    

删除用户账户

  • 账户不存在 需要把他删除掉
  • 自动删除分配的权限

两种方法:

  1. drop User
    • 对有create userdelete权限的用户可以执行drop
  2. delete
    • 直接修改了授权表
    • 执行后立即执行flush priviliges
SET SQL_SAFE_UPDATES = 0;
-- 如果这个user有确定的某个主机 一定要带上主机名
delete from mysql.user where user='jia' and host='localhost';
drop user 'jia'@'localhost';

管理用户权限

  • 用create user和insert语句后并没有设置权限
  • 所以需要分配权限以管理用户对数据库的访问
  • 也可以撤销一些用户的权限

授予权限

  1. grant 权限 on 表 to 账户
-- 允许chang用户执行select操作在sakila任何表
grant select on sakila.*  to 'chang'@'localhost';

-- 允许jia这个用户可以在sakila所有表中执行....操作
grant select,update,insert, delete, create, alter on sakila.*  to 'jia'@'localhost';

注意

  • 若是 * . *: 表示指定用户对mysql所有数据库所有表拥有设置的权限
  • 若是*:表示指定用户 对当前数据库的所有表拥有设置的权限
  • 若是 数据库名字.* : 表示对特定数据库的所有表
  • 也可以只有表名: 用户只对该表有此权限
  • 可以指定特定列名: 表示只对该列有权限
  • 可以用all 赋予所有权限
  1. 查看授权

    show grant

    -- 显示权限
    show grants for 'jia'@'localhost';
    

撤销权限

revoke: 可以撤销全部或者部分权限

-- 撤销权限 
revoke select,update,insert, delete, create, alter on sakila.*  from 'jia'@'localhost';
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值