目录
- CREATE USER '用户名'@'来源地址' [IDENTIFIED BY [PASSWORD] '密码'];
-
- #‘用户名’:指定将创建的用户名
- #‘来源地址’:指定新创建的用户可在哪些主机上登录,可使用IP地址、网段、主机名的形式,本地用户可用localhost,允许任意主机登录可用通配符%
- #‘密码’:若使用明文密码,直接输入’密码’,插入到数据库时由Mysql自动加密;
- ------若使用加密密码,需要先使用SELECT PASSWORD(‘密码’); 获取密文,再在语句中添加 PASSWORD ‘密文’;
- ------若省略“IDENTIFIED BY”部分,则用户的密码将为空(不建议使用)
例:
创建用户名为zhangsan的用户,仅允许该用户在本地进行登录,密码为abc123,by后面接密码,即表示使用明文密码登录
MySQL有单独的加密算法使用select password('密码');会出现明文密码对应的密文密码字段
例:
在创建用户时也可以使用加密字段,MySQL会自动识别
例:
当创建完用户后,可以登录root用户进入mysql库中,查看user表User,Host,authentication_string三列内容,即可看见已有用户、是否是仅本地登录以及密码
- rename user '原用户名'@'来源地址' to '新用户名'@'来源地址';
- select User,Host,authentication_string from user;#查看用户信息
例:
- drop user '用户名'@'来源地址';
- select User,Host,authentication_string from user;#查看用户列表
例:
set password = password('新密码');
例:
set password for '用户名'@'来源地址' = password('新密码');
例:
修改/etc/my.cnf配置文件,不使用密码直接登录到mysql
- vim /etc/my.cnf
-
- [mysqld]
- skip-grant-tables #添加,使登录mysql不使用授权表
-
-
- systemctl restart mysqld #重启mysql服务
-
- mysql #直接登录
例:
grant语句:专门用来设置数据库用户的访问权限。当指定的用户不存在时,grant语句将会创建新的用户;当指定的用户名存在时,grant语句用于修改用户信息。
- grant 权限列表 on 数据库名.表名 to '用户名'@'来源地址' [identified by '密码'];
-
权限列表:用于列出授予用户权限,用逗号进行分隔
如“select,insert,update”。使用all表示所有权限,可授权执行任何操作。
数据库名.表名:用来指定授权操作的数据库和表的名称,其中可以使用通配符“ * ”.
例:使用 " test.* "表示授权操作的对象为 test 数据库中的所有表。
'用户名'@'来源地址':用于指定用户名称和允许访问的客户机地址,即哪个用户能进行连接、能从哪里连接。来源地址可以是域名、IP地址,还可以使用“%”通配符,表示某个区域或网段内的所有地址,如:“%.test.com”、“192.168.32.%”等。
identified by:用于设置用户连接数据时所使用的密码字符串。
在新建用户时,若省略“identified by”部分,则用户的密码将为空。
例:
给zhangsan用户的所有的库和表添加select权限
insert 插入数据
select 查询数据
updata 更新表的数据
delete 删除表中的数据
create 创建库、表
drop 删除库、表
index 建立索引
alter 更改表属性
lock tables 锁表
create view 创建视图
show view 显示视图
create routine 创建存储过程
alter routine 修改存储过程
event 事件
trigger on 创建触发器
show grants for '用户名'@'localhost';
例:
查看zhangsan用户的权限
查看自己的权限
REVOKE 权限列表 ON 数据库名.表名 FROM '用户名'@'来源地址';
例:
撤销用户zhangsanselect权限
flush privileges;