mysql登录其他用户拒绝登录 mysql登录后的设置操作_mysql登录其他用户拒绝登录

 

 

目录总结如下



(2)查看
  show grants for repl@192.168.135.159;
(3)登录

  【1】mysql -u $user -p $password -P $port -h $ip
SQL语句:SELECT  、INSERT 、UPDATE 、 DELETE 、 INDEX

  存储过程:CREATE ROUTINE 、ALTER ROUTINE 、EXECUTE

  管理权限:SUPER 、RELOAD 、SHOW DATABASE 、SHUTDOWN  、GRANT OPTION

(4.1)mysql.user表:insert into mysql.user(user,host,password) values('test2','localhost',password('123456'));

(4.2)常规创建:create user test1@'%' identified by '123456';

(4.3)授权新建:grant all privileges on *.* to 'test2'@'localhost' identified by '123456'; 
#记得,上述3种操作后,想要立马生效,记得 flush privileges;(刷新权限)
#给现有账户授权,如果账户不存在则默认会新建(前提是运行该语句的用户权限足够大,这里我用的root),注意(4.3)该方法在8.0以后版本已经不适用
(4.5)删除用户

  【1】删除mysql.user表的数据:delete from mysql.user where user='test'

  【2】常规删除用户:drop user 'user'@'host';

(5.4)修改管理员账户

    【1】update user set user="新用户名" where user="root"; (将用户名为root的改为新用户名)  【2】flush privileges; (刷新权限) 

  (5.5)密码复杂度要求(修改密码)

    【1】set password for 用户名@localhost = password('新密码');    【2】flush privileges; (刷新权限) 

(5.5)用户登录过程

  【1】用户名和IP验证-》【2】mysql.user权限验证-》【3】看mysql.db表-》【4】看mysql.table_priv-》【5】看mysql.column_priv 
  【6】再没有就报错



 

详细演示:

 

 

三、mysql登录

  常用登录方式如下:

mysql登录其他用户拒绝登录 mysql登录后的设置操作_mysql登录其他用户拒绝登录_02

 

 

四、账户权限设置

  

mysql登录其他用户拒绝登录 mysql登录后的设置操作_mysql登录其他用户拒绝登录_03



 (4.1)查看用户表,所有的用户权限信息都放在mysql.user表中。



 



select user,host,password from mysql.user;



mysql登录其他用户拒绝登录 mysql登录后的设置操作_运维_04



 

(4.2)创建用户



(1)insert into :直接在mysql.user表中插入数据,达到创建用户的目的。
insert into mysql.user(user,host,password) values('test2','localhost',password('123456'));
flush privileges
#flush privileges 命令本质上的作用是将当前user和privilige表中的用户信息/权限设置从mysql库(MySQL数据库的内置库)中提取到内存里。
#MySQL用户数据和权限有修改后,希望在"不重启MySQL服务"的情况下直接生效,那么就需要执行这个命令。
#通常是在修改ROOT帐号的设置后,怕重启后无法再登录进来,那么直接flush之后就可以看权限设置是否生效。而不必冒太大风险。

  


mysql登录其他用户拒绝登录 mysql登录后的设置操作_数据库_05

  可以用select user();查看当前登录用户;  

  


mysql登录其他用户拒绝登录 mysql登录后的设置操作_数据库_06



 



(2)create user:这种方式密码是自动加密的,形式为 user@host

 create user test1@'%' identified by '123456';
 #mysql中用户的形式就是    用户名@主机名,这里主机名位置写的%,代表任意IP都可以连。

  


mysql登录其他用户拒绝登录 mysql登录后的设置操作_数据库_07

  查看授权定义:show grants for test2@localhost;

  

  

mysql登录其他用户拒绝登录 mysql登录后的设置操作_运维_08

  

mysql登录其他用户拒绝登录 mysql登录后的设置操作_mysql登录其他用户拒绝登录_09

 

查看所有权限:select * from mysql.user;

 

 

 



 



(4.3)授权grant:两种,一种是单纯授权,一种是授权并建立用户。



grant all privileges on *.* to 'test2'@'localhost' identified by '123456';  #给现有账户授权,如果账户不存在则默认会新建(前提是运行该语句的用户权限足够大,这里我用的root)

flush privileges; #授权后记得刷新缓存

#也可以用其新建账户并授权(原本 test3@% 是不存在的)

  


mysql登录其他用户拒绝登录 mysql登录后的设置操作_数据库_10

 

  查看其权限: show grants for test3@'%';

  

mysql登录其他用户拒绝登录 mysql登录后的设置操作_mysql_11

 

  查看所有权限:select * from mysql.user;#会出现如下图这种乱码

  

  

mysql登录其他用户拒绝登录 mysql登录后的设置操作_运维_12

 可以竖着看:select * from mysql.user\G;

  

mysql登录其他用户拒绝登录 mysql登录后的设置操作_mysql登录其他用户拒绝登录_13

 

 

 




 

 (4.4)权限等级

  【1】核心开发权限:基本的DML(即CRUD)

  【2】管理权限(表级):DDL及锁表等权限

  【3】管理员权限(server):所有权限,包括创建用户啊,复制、备份等操作;

(4.5)删除用户

 



(1)drop user  test1@127.0.0.1;
(2)delete from mysql.user where condition;
  flush privileges;     #用delete也需要刷新磁盘数据到缓存

  


mysql登录其他用户拒绝登录 mysql登录后的设置操作_数据库_14

 




 

 

五、mysql数据库安全配置

 

  

mysql登录其他用户拒绝登录 mysql登录后的设置操作_数据库_15

  (5.1)禁用多余的管理员账号

    【1】drop user user@host;    【2】delete from mysql.user where condition; (比如删除所有密码为空并且user不为root)

  (5.2)删除掉db表数据

    【1】进入mysql数据库  【2】show tables;查看所有表  【3】找到db表并且delete它(为什么要删,这里其实是删test库访问权限,因为没有权限的用户都可以访问test库,这不太安全)

  (5.3)删除test库

    【1】show databases;  【2】drop database test; (反正test库在线上用不到,可以干掉)

  (5.4)修改管理员账户

    【1】update user set user="新用户名" where user="root"; (将用户名为root的改为新用户名)  【2】flush privileges; (刷新权限) 

  (5.5)密码复杂度要求(修改密码)

    【1】set password for 用户名@localhost = password('新密码');    【2】flush privileges; (刷新权限) 

  (5.6)权限最小化

    只给所需要的最小权限;