------------------创建角色,设置权限-----------------------
****查看角色:SHOW GRANTS;或者 SHOW GRANTS FOR 'lambo1'@'%';
*****查看当前用户:SELECT USER();
***查看所有用户:SELECT DISTINCT User FROM mysql.user;
==========创建一个新用户:
*******方法一使用create user
以下命令会在mysql数据库中的user表创建一条用户信息记录。
注意: MySQL 的SQL语句以分号 (;) 作为结束标识。
一步: /usr/local/mysql/bin/mysql -u root -p enter后输入密码;
二步:CREATE USER 'lambo3'@'localhost' IDENTIFIED BY '123456';//如果localhost改为%表示lambo3可以连接任意服务器;
*******方法二:使用赋予权限的同时创建用户
使用GRANT语句,语法:mysql> grant 权限1,权限2,...权限n on 数据库名称.表名称 to 用户名@用户地址 identified by '密码';如果允许所有权限,权限1,权限2,...权限n就改成all;数据库名称改成*表示所有数据库;表名称改成* 表示所有表;用户地址如果改成%表示所有的地址(即任何一台电脑);
GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP ON firstDB.* TO 'lambo1'@'localhost' IDENTIFIED BY '123456';
********方法三:插入用户到mysql数据库的user表中(注意:mysql5.7 开始没有password字段了,改成了authentication_string);
insert into mysql.user(Host,User, authentication_string) values("localhost","test",password("123456"));-----不能用
mysql5.0以后会出现错误Field 'ssl_cipher' doesn't have a default value;
原因:5.0以上的mysql用户表的中某些字段不能为空,没有默认值,其实是操作错误,mysql添加用户是不能这样直接insert user表的。;
解决:使用方法一或方法二;或者按照下面的操作:
1.创建用户:
create user lambo7;
2.使用mysql数据库
use mysql;
3.更新设置用户密码:
update mysql.user set authentication_string=password('123456') where User='lambo7' and Host='localhost';
4.刷新设置:
flush privileges;
---------------------------设置权限-------------------
授权格式:grant 权限 on 数据库.* to 用户名@登录主机 identified by "密码";
2.1 登录MYSQL(有ROOT权限),这里以ROOT身份登录:
@>mysql -u root -p
@>密码
2.2 首先为用户创建一个数据库(testDB):
create database testDB;
2.3 授权test用户拥有testDB数据库的所有权限(某个数据库的所有权限):
grant all privileges on testDB.* to test@localhost identified by '1234';
flush privileges;//刷新系统权限表
格式:grant 权限 on 数据库.* to 用户名@登录主机 identified by "密码";
2.4 如果想指定部分权限给一用户,可以这样来写:
grant select,update on testDB.* to test@localhost identified by '1234';
flush privileges; //刷新系统权限表
2.5 授权test用户拥有所有数据库的某些权限:
grant select,delete,update,create,drop on *.* to test@"%" identified by "1234";
//test用户对所有数据库都有select,delete,update,create,drop 权限。
//@"%" 表示对所有非本地主机授权,不包括localhost。
---------------------取消用户、删除权限-----------------------
a. 取消一个用户和其权限(删除用户,并且权限页删掉)
Drop USER user;
drop user username@'%'
drop user username@localhost
flush privileges; //刷新系统权限表
b. 取消用户授权(可以取消部分和全部):
语法:REVOKE privilege ON databasename.tablename FROM 'username'@'host';
例子: REVOKE SELECT ON *.* FROM 'pig'@'%';
REVOKE SELECT ON test.user FROM 'pig'@'%';
revoke all on *.* from sss@localhost ;
revoke all on user.* from 'admin'@'%';
flush privileges; //刷新系统权限表
c. 删除用户:(只是删除了user表中的数据,权限设置还在)
语法: Delete from user where user = "user_name" and host = "host_name" ;
例子:delete from user where user='lambo6' and host='localhost';
flush privileges; //刷新系统权限表