mysql创建用户授权


前言

在mysql的使用中,避免不了要给他人使用我们自己的数据库,此时为了使用安全,我们不想让对方看到过多的数据库,或者减少它对于我们数据库可能造成的破坏,赋予他部分权限,以确保我们数据库的安全性,如何做呢?


一、确定是本地连接还是远程链接

相对而言,一般这种情况都是远程链接,为了给别人用嘛~

  • 本地连接 localhost
  • 给别人远程连接 % 或者 具体ip

二、创建步骤

需要用高级用户登录(能分配权限,能创建用户等)

1.给其本机创建

创建用户
赋权限
刷新权限
查看创建的用户以及权限

-- 创建一个用户名密码为 test test 的用户
CREATE USER 'test'@'localhost' IDENTIFIED BY 'test';
-- 赋予这个用户 的数据库为ry (ry)所有表(.*),所有权限(ALL PRIVILEGES)
GRANT ALL ON ry.* TO 'test'@'localhost';
-- 刷新权限
FLUSH PRIVILEGES;
-- 查看用户 test 的信息以及权限
show grants for 'test'@'localhost';

本机使用

2.给其他主机创建用户

可以同名 仍让使用test 也可以,创建一个新的用户名也可以

-- 创建一个用户名密码为 test test 的用户
CREATE USER 'test'@'%' IDENTIFIED BY 'test';
-- 赋予这个用户 的数据库为ry (ry)所有表(.*),所有权限(ALL PRIVILEGES)
GRANT ALL ON ry.* TO 'test'@'%';
-- 刷新权限
FLUSH PRIVILEGES;
-- 查看用户 test 的信息以及权限
show grants for 'test'@'%';

3.删除用户

上述操作,我们其实创建了两个用户,虽然用户名一样

  • 本地用户 test (‘test’@‘localhost’)
  • 远程用户 test (‘test’@‘%’)
-- 删除本地用户test
DROP USER 'test'@'localhost'; 
-- 删除远程用户test
DROP USER 'test'@'%'; 

总结

补充:

  • grant 是授权的意思:
    GRANT privileges ON databasename.tablename TO ‘username’@‘host’

    说明: privileges:用户的操作权限,如SELECT,INSERT,UPDATE等,如果要授予所的权限则使用ALL
    databasename:数据库名 tablename:表名,如果要授予该用户对所有数据库和表的相应操作权限则可用表示,如.*
    ‘username’ 用户名
    ‘host’ ip地址,可选值: localhost, 具体ip,不限制 %

  • 用户密码修改
    SET PASSWORD FOR ‘username’@‘host’ = PASSWORD(‘newpassword’);

    说明: ‘host’ 要更改的具体用户归属 ,与授权可选值一致
    username newpassword 分别为要更改的用户名 以及新密码

猜你喜欢

转载自blog.csdn.net/qq_32419139/article/details/131720385