前言
在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 分别为要更改的用户名 以及新密码