简介网站建设流程,百度搜不到网站,一个考试网站怎么做,怎么用flash做视频网站「前言」文章内容大致是MySQL的用户管理。 「归属专栏」MySQL 「主页链接」个人主页 「笔者」枫叶先生(fy) 目录 一、用户管理1.1 用户信息1.2 创建新用户1.3 删除用户1.4 修改用户密码 二、数据库的权限2.1 给用户授权2.2 回收用户权限 一、用户管理
MySQL与Linux类似#x… 「前言」文章内容大致是MySQL的用户管理。 「归属专栏」MySQL 「主页链接」个人主页 「笔者」枫叶先生(fy) 目录 一、用户管理1.1 用户信息1.2 创建新用户1.3 删除用户1.4 修改用户密码 二、数据库的权限2.1 给用户授权2.2 回收用户权限 一、用户管理
MySQL与Linux类似也分普通用户的root用户如果只能使用root用户这样存在安全隐患这时就需要使用MySQL的用户管理对用户进行权限管理
1.1 用户信息
在MySQL里默认带有一个mysql的数据库 该数据库中有一张user表 该表存放的就是MySQL用户相关的信息\G按行打印 部分字段说明
user表示该用户的用户名host表示这个用户可以从哪个主机登陆如果是localhost表示只能从本机登陆%表示可以从任意地方登录authentication_string用户密码通过password函数加密后形成的字符串*_privxxx_priv表示用户拥有的权限Y拥有该权限N没有 查看当前用户 select user();注root是用户名localhost是主机名
1.2 创建新用户
创建用户的SQL如下
create user 用户名登陆主机/ip identified by 密码;创建一个用户名为test可以从任意地方登录的用户 create user test% identified by 123123aa;注%表示可以从任意地方登录是localhost表示只能从本机登陆
MySQL本身的认证级别比较高因此创建用户时设置的密码不能太简单否则会出现报错这时你可以选择将密码设置复杂一些也可以对密码相关的设置进行调整
要降低MySQL输入密码的安全强度可以通过修改validate_password的相关变量来实现
查看当前的validate_password相关变量
show variables like validate_password%;validate_password_policy的默认值为1表示密码必须包含数字、小写字母、大写字母和特殊字符。将其设置为0将禁用这些要求 set global validate_password_policy0;创建新用户成功后该用户的相关信息也就被写入到刚才的user表中了进行查看该用户信息太多进行过滤 select user,host,authentication_string from user;可以用新创建的普通用户来连接MySQL服务器 创建的这个用户可以从任意地方登录因此如果你在Windows下也安装了MySQL那么就可以在Windows的cmd窗口进行远程登录 注意
在MySQL里涉及到密码password该SQL不会被历史记录下来注意不要轻易添加一个可以从任意地方登陆的用户进行测完就删除不然容易黑客挨打
1.3 删除用户
删除用户语法如下
drop user 用户名主机名;例如删除上面的test用户
drop user test%;1.4 修改用户密码 自己改自己密码 语法如下
set passwordpassword(新的密码);root用户修改指定用户的密码 语法如下
set password for 用户名主机名password(新的密码)二、数据库的权限
如果一个用户只需要访问MySQL中的某一个数据库甚至数据库中的某一个表那么可以为其创建一个普通用户并为该用户赋予对应的权限而不让该用户看到数据库中的其他数据防止该用户对其他数据进行误操作 MySQL数据库提供的权限列表 注意新创建的用户没有任何权限因此创建用户后需要给用户授权
2.1 给用户授权
刚创建的用户没有任何权限需要给用户授权语法如下
grant 权限列表 on 库.对象名 to 用户名登陆地址/ip [identified by 密码]说明
toto后面跟的是用用户表示给哪一个用户授权库名.对象名表示要授予用户哪个数据库下的哪个对象表的权限例如*.* : 代表本系统中的所有数据库的所有对象表视图存储过程等库.* : 表示某个数据库中的所有数据对象(表视图存储过程等)identified by可选项如果用户存在赋予权限的同时修改密码如果该用户不存在就是创建用户权限列表表示要授予用户何种权限多个权限之间用逗号隔开
-- 权限列表例如
grant select on ... -- 赋予select权限
grant select, delete, create on -- 表示赋予select, delete, create权限
grant all [privileges] on ... -- 表示赋予该用户在该对象上的所有权限创建一个新用户zhangsan然后通过一些命令可以查看该用户现有的权限
show grants for 用户名登录地址;例如 show grants for zhangsanlocalhost;注
创建用户后该用户默认会有USAGE权限该权限只能用于数据库登录不能执行任何操作
查看该用户的数据库只有一个系统自带的root用户下的数据库普通用户看不到 在root用户下创建一个test_db的数据库授予zhangsna用户在test_db数据库下所有对象的select权限
grant select on test_db.* to zhangsanlocalhost;注*.*表示所有数据库的所有对象库名.*表示某个数据库的所有对象表、视图、存储过程等
此时查看该用户的数据库就能查看到该数据库了 该用户目前只能查看表中的信息而不能对表中的数据进行其他操作如果需要进行其他操作需要赋予相应的权限 下面将test_db该数据库的所有权限赋予给该用户授权之后该用户就可以对该数据库进行任何操作了不演示了 grant all on test_db.* to zhangsanlocalhost;注意如果发现赋权限后没有生效执行如下指令 flush privileges;2.2 回收用户权限
回收用户权限SQL语法如下
revoke 权限列表 on 库.对象名 from 用户名登陆地址/ip;回收权限的语法与授权语法相似不解释了
例如将zhangsan用户在test_db数据库的所有权限进行回收
revoke all on test_db.* from zhangsanlocalhost;注意如果回收权限时该用户正在使用对应数据库那么回收权限后该用户仍然拥有对应的权限只有下一次该用户再进入该数据库时新权限才会起作用 --------------------- END ----------------------
「 作者 」 枫叶先生
「 更新 」 2023.9.13
「 声明 」 余之才疏学浅故所撰文疏漏难免或有谬误或不准确之处敬请读者批评指正。