fieldtianye

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> mysql_native_password BY \'你的密码\';
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; 

 

分类:

技术点:

相关文章:

  • 2021-09-30
  • 2021-06-08
  • 2021-11-19
  • 2021-07-26
  • 2021-12-05
  • 2021-04-01
  • 2022-01-07
  • 2021-12-19
猜你喜欢
  • 2021-04-18
  • 2021-12-22
  • 2021-12-02
  • 2021-12-22
  • 2021-12-12
  • 2022-01-07
  • 2021-12-22
相关资源
相似解决方案