MySQL常用权限操作
5.7版本操作
添加用户:
// 允许指定ip连接 CREATE USER 'username'@'host' IDENTIFIED BY 'password'; create user '新用户名'@'localhost' identified by '密码'; // 不限制 IP(用通配符%表示) create user '新用户名'@'%' identified by '密码'; CREATE USER 'javacui'@'localhost' IDENTIFIED BY '123456'; CREATE USER 'javacui'@'172.20.0.0/255.255.0.0' IDENDIFIED BY '123456'; CREATE USER 'javacui'@'%' IDENTIFIED BY '123456'; CREATE USER 'javacui'@'%' IDENTIFIED BY ''; CREATE USER 'javacui'@'%';
授权
// 基本格式如下 grant all privileges on 数据库名.表名 to '新用户名'@'指定ip' identified by '新用户密码' ;// 允许访问所有数据库下的所有表 grant all privileges on *.* to '新用户名'@'指定ip' identified by '新用户密码' ; // 指定数据库下的指定表 grant all privileges on test.test to '新用户名'@'指定ip' identified by '新用户密码' ;
注意:用以上命令授权的用户不能给其它用户授权,如果想让该用户可以授权,用以下命令
GRANT privileges ON databasename.tablename TO 'username'@'host' WITH GRANT OPTION;
设置用户操作权限
// 设置用户拥有所有权限也就是管理员 grant all privileges on *.* to '新用户名'@'指定ip' identified by '新用户密码' WITH GRANT OPTION; // 查询权限 grant select on *.* to '新用户名'@'指定ip' identified by '新用户密码' WITH GRANT OPTION; // 设置用户拥有查询插入的权限 (其它操作权限说明,select查询 insert插入 delete删除 update修改)
grant select,insert on *.* to '新用户名'@'指定ip' identified by '新用户密码' WITH GRANT OPTION;
// 去掉查询权限
REVOKE select ON what FROM '新用户名';
之前版本:
注:除了新建用户INSERT 和更新密码其他命令可以用(因为 user 表的 password 字段变成 authentication_string)
常用:更新密码
(SQL命令控制台执行)
UPDATE user SET PASSWORD=PASSWORD('123456') WHERE USER='ROOT' AND HOST='%';
或者(SQL命令控制台执行)
SET PASSWORD FOR root@localhost= PASSWORD('123456');
当前用户简单
SET PASSWORD = PASSWORD("newpassword");
或者(下面这个shell中执行,输入原密码和新密码)
mysqladmin -u root -p old_password password new_password
常用:赋予权限
GRANT ALL PRIVILEGES ON *.* TO 'root' @'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
注:'root' @'%',root为你要修改的SQL用户名,%为ip,%表示权限开发所有IP都可访问,如果有具体的IP,改成IP地址即可。
** 修改完密码后记得刷新权限 **
FLUSH PRIVILEGES;
1.新建用户
mysql -u root -p
Enter password:
输入密码登录。
创建用户:
mysql> INSERT INTO mysql.user(Host, User, Password) VALUES ("localhost", "test", PASSWORD("123456"))
这样就创建了一个名为:test 密码为:123456的用户。
注意:此 localhost 指该用户只能在本地登录,不能远程登录。如果想远程登录的话,将 localhost 改为 %,表示不限制 ip。也可指定 某机器 / ip 可以远程登录。
然后登录试试:
mysql> exit; $ mysql -u test -p Enter password:
2. 为用户授权
授权格式:grant 权限 on 数据库.* to 用户名@登录主机 identified by "密码";
(1) 登录MYSQL(有ROOT权限),这里以ROOT身份登录:
mysql -u root -p
(2) 首先为用户创建一个数据库(testDB):
mysql>CREATE DATABASE test_db;
(3) 授权test用户拥有testDB数据库的所有权限(某个数据库的所有权限):
mysql> GRANT ALL PRIVILEGES ON test_db.* TO test@localhost IDENTIFIED BY '123456'; mysql> FLUSH PRIVILEGES; //刷新权限
(4) 如果想指定部分权限给一用户,可以这样来写:
mysql> GRANT SELECT,UPDATE ON test_db.* to test@localhost IDENTIFIED BY '123456'; mysql> FLUSH PRIVILEGES; //刷新权限
(5) 授权test用户拥有所有数据库的某些权限:
mysql> GRANT SELECT,DELETE,UPDATE,CREATE,DROP ON *.* to test@"%" identified by "123456";
3. 删除用户
mysql> DELETE FROM user WHERE User = 'test' AND Host = 'localhost'; mysql> FLUSH PRIVILEGES; mysql> DROP DATABASE test_db; //删除用户的数据库
最后删除账户及权限:
mysql> DROP USER 用户名@'%'; mysql> DROP USER 用户名@localhost;