MySQL常用权限操作

MySQL常用权限操作

** ubuntu mysql 8.0.21修改root密码 **

1、查看默认安装密码:

sudo cat /etc/mysql/debian.cnf

 2、 登录mysql

mysql -u debian-sys-maint -p

3、更新密码并刷新权限

mysql> use mysql;
mysql> flush privileges;
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码';
mysql> UPDATE user SET host = '%' WHERE user = 'root'; mysql
> flush privileges;

 

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; 

 

posted @ 2020-03-06 09:55  fieldtianye  阅读(556)  评论(0编辑  收藏  举报