精华内容
下载资源
问答
  • mysql用户
    千次阅读
    2021-11-27 21:54:31


    参看:

    • 《MySQL必知必会》
    • https://www.cnblogs.com/Richardzhu/p/3318595.html

    一、MySQL用户权限

    我的MySQL版本是5.7~

    最近有一个项目,在开发过程中直接把数据库安装到阿里云服务器,本地连接阿里云服务器中的MySQL就不能直接root用户连接,而每次数据库操作都要使用新建的用户与用户进行交互操作。

    在使用非root用户的时,执行本地的sql文件,就需要一些权限,比如 SELECT,INSERT,UPDATE,DELETE,CREATE 等等权限,下面就以此做一份笔记,之后在开发的时候,就可以查看此文章的记录,直接进行应用即可。

    添加MySQL用户并设置权限的好处:新的SQL用户不允许访问访问属于其他SQL用户的库或表,甚至不能使用SELECT语句。新的SQL用户必须显式的被授予权限,才能执行对应的操作。

    二、用户权限介绍

    1.权限级别

    • 全局:可以管理整个MySQL
    • 数据库:可以管理指定的数据库
    • 数据表:可以管理指定数据库的指定表
    • 字段:可以管理指定数据库的指定表的指定字段

    权限存储在mysql库的user,db,tables_priv,columns_priv,procs_priv这几个系统表中,待MySQL实例启动后就加载到内存中,实现用户的权限控制。

    2.权限实现

    MySQL权限实现分为两段验证:

    第一阶段:服务器首先会检查此用户是否允许连接。先从user表中的Host,User,Password这3个字段中判断连接的ip、用户名、密码是否存在,存在则通过验证。

    第二阶段:通过身份验证后,用户发起的每个请求都需要进行权限判断,按照 user,db,tables_priv,columns_priv,procs_priv 的顺序进行验证。即先检查全局权限表user,如果user中对应的权限为Y,则此用户对所有数据库的权限都为Y,将不再检查db, tables_priv,columns_priv;如果为N,则到db表中检查此用户对应的具体数据库,并得到db中为Y的权限;如果db中为N,则检查tables_priv中此数据库对应的具体表。以此类推。

    3.权限分布

    MYSQL的权限如何分布,就是针对表可以设置什么权限,针对列可以设置什么权限等等,这个可以从官方文档中的一个表来说明:

    权限分布可能的设置的权限
    表权限‘Select’, ‘Insert’, ‘Update’, ‘Delete’, ‘Create’, ‘Drop’, ‘Grant’, ‘References’, ‘Index’, ‘Alter’
    列权限‘Select’, ‘Insert’, ‘Update’, ‘References’
    过程权限‘Execute’, ‘Alter Routine’, ‘Grant’

    以上也是我们最常用的一些权限。更多的权限设置,直接查看官方文档中对权限的描述即可。

    4.查询权限表

    查看用户MySQL用户

    select user,host from mysql.user;
    

    查看root用户在权限表中的权限

    前一个表为N,系统才会去检查下一个表。

    # Y表示有权限 ,N表示无权限
    # 1.mysql.user表 (all)
    select * from mysql.user where user='root';
    
    # 2.mysql.db表 (empty)
    select * from mysql.db where user='root';
    
    # 3.mysql.tables_priv (empty)
    select * from mysql.tables_priv where user='root';
    
    # 4.mysql.colums_priv表 (empty)
    select * from mysql.columns_priv where user='root';
    
    # 5.mysql.procs_priv (empty)
    select * from mysql.procs_priv where user='root';
    

    三、用户权限实战

    以下所有操作都是以为root用户,在mysql库中进行。

    1.查看用户权限信息

    查看当前用户

    select user();
    

    查看MYSQL有哪些用户

    select user,host from mysql.user;
    

    查看已经授权给用户的权限信息

    show grants for 'pdh'@'%';
    

    2.用户创建和授权

    简单说一下MySQL的授权用户组成: 'user_name'@'host_name'(中间使用@符号连接)。其中user_name表示用户名,host_name表示主机,可以是ipv4和ipv6格式的,%表示所有主机均可访问。下面列举一下不同的格式表示不同的主机:

    user_namehost_name说明
    ‘pdh’‘198.51.100.177’pdh,只能从此ip连接
    ‘pdh’‘198.51.100.%’pdh,从198.51.100 子网中的任何主机
    ‘pdh’‘%’pdh,任何主机可连

    创建MySQL用户和权限*

    # 1.使用CREATE创建用户,后再授权
    # 1.1 创建 pdh 用户,设置密码为123456,并没有权限
    CREATE USER 'pdh'@'%' IDENTIFIED BY '123456';
    # 1.2 授予pdh查询和添加test库的权限
    grant select,insert,update,delete,create,alter on test.* to 'pdh';
    
    # 2.使用GRANT创建用户并授权test库的所有操作
    grant all privileges on test.* to 'pdh'@'%' identified by "123456" with grant option;
    

    以上指令说明

    1. ALL PRIVILEGES 是表示所有权限,你也可以使用select、update等权限。
    2. ON 用来指定权限针对哪些库和表
    3. test.*  表示test库的所有表
    4. TO 表示将权限赋予某个用户。
    5. 'pdh'@'%' 表示pdh用户,主机为%。主机可以是IP、IP段、域名以及%
    6. IDENTIFIED BY 指定用户的登录密码
    7. WITH GRANT OPTION 这个选项表示该用户可以将自己拥有的权限授权给别人
    

    刷新权限

    使用这个命令使权限生效,对权限表user、db、host等做了update或者delete更新的时候务必执行权限刷新。

    flush privileges;
    

    查看和修改权限

    查看当前用户权限

    show grants;
    

    查看某个用户权限

    show grants for 'pdh'@'%';
    

    回收权限

    # 回收alter权限
    revoke alter on test.* from 'pdh'@'%';
    # 回收所有权限
    revoke all privilegeson test.* from 'pdh'@'%';
    
    更多相关内容
  • MySQL 用户授权

    万次阅读 2021-12-30 22:13:38
    MySQL 用户授权 用户授权 grant授权 相关命令 授权库mysql 撤销权限 删除授权用户 root密码 恢复root密码 修改(重置)root密码 MySQL 用户授权 用户授权 grant授权 用户授权 —— 在数据库...

    目录

    MySQL 用户授权

    用户授权

    grant授权

    相关命令

    授权库mysql

    撤销权限

    删除授权用户

    root密码

    恢复root密码

    修改(重置)root密码


    MySQL 用户授权

    用户授权

    grant授权

    • 用户授权

    —— 在数据库服务器上添加新的连接用户,在添加用户时可以设置访问权限及连接密码。

    —— 默认数据库管理员root用户本机登录有授权权限。

    • 命令格式

    mysql> grant 权限列表 on 库名 to 用户名@"客户端地址"

                 identified by "密码"     //授权用户密码

                 with grant option;       //有授权权限,可选项

    • 权限列表

    —— all             //所有权限  

    —— usage       //无权限

    —— select,update,insert        //个别权限

    —— select,update (字段1, ... ,字段N)        //指定字段

    • 库名

    —— *.*             //所有库所有表

    —— 库名.*        //一个库

    —— 库名.表名   //一张表

    • 用户名

    —— 授权时自定义要有标识性

    —— 存储在mysql库的user表里

    • 客户端地址

    —— %                          //所有主机

    —— 192.168.233.%      //网段内的所有主机   

    —— 192.168.233.1       //1台主机 

    —— localhost               //数据库服务器本机

    • 应用示例

    —— 添加用户mydba,对所有库、表有完全权限

    —— 允许从任何客户端连接,密码123qqq...A

    —— 且有授权权限

    实验环境准备:

    MySQL服务端为主机192.168.233.130

    MySQL客户端为主机192.168.233.150

    注:MySQL客户端也要装有MySQL软件,否则无法使用SQL语句,也可以是用Mariadb替代。

    服务端:

    mysql> grant all on *.* to mydba@"%" identified by "123qqq...A" with grant option;        //服务端进行用户授权,all表示有所有权限;*.*指所有库、所有表;%是指允许从所有主机进行连接;密码是123qqq...A,with grant option指的是有授权权限,可以授予别的用户权限。

    客户端:

    [root@DB2 ~]# mysql -h192.168.233.130 -umydba -p123qqq...A       //客户端使用授权用户连接数据库服务器

      • 验证删除库和表的权限

    客户端:

    mysql> show databases;       //从客户端查看数据库服务器中所有的库

    mysql> drop database db1;       //在客户端删除库db1

    服务端:

    mysql> show databases;        //在服务端查询库db1已被删除

    客户端:

    mysql> use db2;

    mysql> show tables;

    mysql> drop table db2.t2;       //在客户端删除库db2中的t2表

    服务端:

    mysql> select * from db2.t2;       //在服务端查询db2中的t2表的数据出现报错,原因db2.t2表已被删除

    ERROR 1146 (42S02): Table 'db2.t2' doesn't exist

      • 验证新建库和表的权限

    客户端:

    mysql> create database db4;        //在客户端新建一个库db4

    mysql> create table db4.t1(id int);         //在客户端库db4中新建一个表t1

    服务端:

    mysql> show databases;        //在服务端查询库db4创建成功

    mysql> use db4;

    mysql> show tables;         //在服务端查询表t1创建成功

      • 验证对表记录进行增删改查的权限

    客户端:

    mysql> select * from db3.user limit 1;       //在客户端查询db3库中user表的前一行数据

    mysql> insert into db4.t1 values(100);       //在客户端db4库中的t1表中插入记录

    服务端:

    mysql> select * from db4.t1;        //在服务端中查询db4库中的t1表,发现刚才插入的记录

    客户端:

    mysql> update db4.t1 set id=1000;         //在客户端修改db4库的t1表中的记录

    服务端:

    mysql> select * from db4.t1;         //服务端中查询db4库中的t1表,发现刚才修改的记录

      • 验证对用户的授权权限

    客户端:

    mysql> grant select,insert,update(password,UID) on db3.user to yaya@"localhost" identified by "123qqq...A";     //添加用户yaya,有查询、插入、修改db3库user表中password字段和UID字段的权限,只允许数据库服务器本机进行登录,密码为123qqq...A

    [root@DB2 ~]# mysql -h192.168.233.130 -uyaya -p123qqq...A      //在客户端进行登录测试,发现失败,因为用户yaya在授予权限的时候,只允许在数据库服务器本机进行登录,所以在客户端访问就被拒绝

    mysql: [Warning] Using a password on the command line interface can be insecure.

    ERROR 1045 (28000): Access denied for user 'yaya'@'192.168.233.150' (using password: YES)

    服务端:

    [root@DB ~]# mysql -uyaya -p123qqq...A

    mysql> show databases;       //查看所有数据库,由于设置只对db3库有权限,所以只能看见db3库

    //如上图所示,除了db3库外,还可以看见库information_schema,但是我们并没有设置对information_schema库的权限,所以不应该能看见information_schema库。原因是information_schema库是一个虚拟库,是内存中的数据映射在里面的记录,相当于是一个不存在的库,因为在数据库目录下根本不存在。除了查询权限,没有别的权限。

    [root@DB ~]# ls /var/lib/mysql       //数据库目录根本没有information_schema的目录

    mysql> drop database information_schema;      //我们删除information_schema库时拒绝访问。

    ERROR 1044 (42000): Access denied for user 'yaya'@'localhost' to database 'information_schema'

    mysql> create table information_schema.a1(id int);      //我们在information_schema库里建表时也被拒绝访问

    ERROR 1044 (42000): Access denied for user 'yaya'@'localhost' to database 'information_schema'

    mysql> use information_schema;

    mysql> show tables;

    mysql> select * from information_schema.VIEWS;

    Empty set (0.00 sec)

    //综上所述,我们对information_schema库、库里面的表及表记录有查询权限,除此以外对information_schema库没有别的权限(增删改)。

    mysql> delete from db3.user;       //删除db3库的user表执行失败,因为没有授予yaya用户对db3库的user表的删除权限

    ERROR 1142 (42000): DELETE command denied to user 'yaya'@'localhost' for table 'user'

    • 应用示例2

    —— 添加admin用户,允许从192.168.233.0/24网段连接,对db3库的user表有查询权限,密码123qqq...A

    mysql> grant select on db3.user to admin@"192.168.233.%" identified by "123qqq...A";

    —— 添加admin2用户,允许从本机连接,允许对db3库的所有表有查询/更新/插入/删除记录权限,密码123qqq...A

    mysql> grant select,update,insert,delete on db3.* to admin2@"localhost" identified by "123qqq...A";

    相关命令

    • 登录用户使用

    命令

    作用

    select user();

    显示登录用户名及客户端地址

    show grants;

    用户显示自身访问权限

    show grants for 用户名@"客户端地址";

    管理员查看已有授权用户权限

    set password=password("密码");

    授权用户连接后修改修改连接密码

    set password for 用户名@"客户端地址"=password("密码");

    管理员重置授权用户连接密码

    drop user 用户名@"客户端地址";

    删除授权用户(必须有管理员权限)

    • 实验环境

    客户端使用yaya用户进行登录:

    [root@DB2 ~]# mysql -h192.168.233.130 -uyaya -p123qqq...A

    服务端使用root用户进行登录:

    [root@DB ~]# mysql -uroot -p123456

    • select user();

    客户端:

    [root@DB2 ~]# mysql -h192.168.233.130 -uyaya -p123qqq...A

    mysql> select user();      //显示登录用户名及客户端地址

    服务端:

    [root@DB ~]# mysql -uroot -p123456

    mysql> select user();

    • show grants;

    客户端:

    mysql> show grants;      //用户显示自身访问权限

    //如图所示,ALL PRIVILEGES是指有所有权限,用户mydba对所有库、表有完全权限,允许从任何客户端连接,且有授权权限。

    服务端:

    mysql> show grants;

    //如图所示:ALL PRIVILEGES是指有所有权限,用户root对所有库、表有完全权限,只允许从数据库服务器本机连接,且有授权权限。PROXY是指在本机(数据库服务器)用root登录时,root用户可以把自己的权限复制给其他用户。

    • show grants for 用户名@"客户端地址";

    服务端:

    mysql> show grants for yaya100@"%";      //查看有没有yaya100的用户能在网络中所有主机登录的授权用户,没有对应的授权用户就会报错,错误提示没有定义这样的用户

    ERROR 1141 (42000): There is no such grant defined for user 'yaya100' on host '%'  

    mysql> show grants for mydba@"%";       //查看有没有mydba的用户能在网络中所有主机登录的授权用户

    mysql> show grants for yaya@"localhost";

    //如图所示:USAGE是指yaya用户在本机登录的时候,对所有库、所有表是没有任何权限的,仅db3库下的user表中的UID字段和password字段有查询、插入、更新的权限。

    注:普通用户有的是show grants权限,没有show grants for权限的,show grants for只有管理员才有。

    • set password=password("密码");

    注:密码必须要用password函数加密

    mysql> select password("123456");      //显示将明文密码123456加密后的效果

    客户端:

    mysql> set password=password("123456");       //授权用户连接后修改修改连接密码,修改的密码要符合密码策略,由于之前修改过密码策略所以可以设置为123456

    mysql> exit

    [root@DB2 ~]# mysql -h192.168.233.130 -umydba -p123456

    • set password for 用户名@"客户端地址"=password("密码");

    服务端:

    mysql> set password for mydba@"%"=password("123qqq...A");      //管理员重置授权用户连接密码

    客户端:

    [root@DB2 ~]# mysql -h192.168.233.130 -umydba -p123qqq...A       //客户端进行登录验证

    • drop user 用户名@"客户端地址";

    mysql> drop user yaya100@"localhost";       //删除不存在的授权用户会出现错误提示:删除失败

    ERROR 1396 (HY000): Operation DROP USER failed for 'yaya100'@'localhost'

    mysql> drop user yaya@"localhost";        //删除授权用户(必须有管理员权限)

    mysql> exit

    [root@DB ~]# mysql -uyaya -p123qqq...A       //删除之后再用yaya用户登录就会出现错误,表示拒绝访问

    mysql: [Warning] Using a password on the command line interface can be insecure.

    ERROR 1045 (28000): Access denied for user 'yaya'@'localhost' (using password: YES)

    授权库mysql

    • mysql库记录授权信息,主要表如下:

    —— user表    记录已有的授权用户及权限

    —— db表    记录已有授权用户对数据库的访问权限

    —— tables_priv表    记录已有授权用户对表的访问权限

    —— columns_priv表    记录已有授权用户对字段的访问权限

    注:查看表记录可以获取用户权限,也可以通过更新表记录,修改用户权限。

    [root@DB ~]# mysql -uroot -p123456

    mysql> show databases;

    mysql> use mysql;

    mysql> show tables;

    //如图所示,与授权相关的表有四个,分别是user、db、tables_priv、columns_priv

    • user表

    mysql> desc mysql.user;      //查看mysql库下user表的表结构

      • 通过查看表记录获取用户权限信息

    mysql> select host,user from mysql.user;       //查询已有的授权用户和对应的可以连接的客户端

    mysql> select * from mysql.user where host="%" and user="mydba"\G;      //把mysql库下的user表中host字段是为%,user字段值为mydba的记录所有的列都显示出来。即显示用户mydba的所有权限。\G以列的方式显示出来。

    • db表

    mysql> desc mysql.db;

      • 通过查看表记录获取用户权限信息

    mysql> select host,db,user from mysql.db;

    mysql> select * from mysql.db where host="localhost" and db="db3" and user="admin2"\G;     //显示用户admin2的所有权限

      • 通过更新表记录来修改用户权限

    mysql> show grants for admin2@"localhost";        //查看授权用户admin2的权限,此命令的输出结果信息是由上面表中记录中获取的信息

    mysql> update mysql.db set Update_priv="N",Delete_priv="N" where host="localhost" and db="db3" and user="admin2";      //修改权限,将更新、删除权限关闭

    mysql> flush privileges;      //刷新权限表,确保修改后的权限生效

    mysql> select * from mysql.db where host="localhost" and db="db3" and user="admin2"\G;                   

    mysql> show grants for admin2@"localhost";       //查看授权用户admin2修改后的权限

    • tables_priv表

    mysql> desc tables_priv;      //查看tables_priv的表结构

    mysql> select * from tables_priv;       //查看tables_priv的表记录

    mysql> select * from mysql.tables_priv where db="db3" and table_name="user";      //查看db3库user表的表记录

    mysql> show grants for admin@"192.168.233.%";        查看授权用户admin的权限

    • columns_priv表

    mysql> desc mysql.columns_priv;

    //host客户端地址字段;Db库名字段;User授权用户名字段;Table_name表名字段;Column_name字段名字段;Timestamp授权时间字段;Column_priv字段授权权限字段

    mysql> select * from mysql.columns_priv;         //没有表记录

    Empty set (0.00 sec)

    mysql> grant select,update(UID) on db3.user to yaya99@"%" identified by "123456";        //添加一条记录,授权用户yaya99对字段UID有查询、更新权限

    mysql> select * from mysql.columns_priv;       //在查看表记录,就有数据了

    //授权时间字段默认就是0000-00-00 00:00:00

    撤销权限

    • 删除已有授权用户的权限

    • 命令格式

    mysql> revoke 权限列表 on 库名.表名 from 用户名@"客户端地址";

    • 示例

    服务端:

    mysql> select host,user from mysql.user;

    mysql> show grants for mydba@"%";

    mysql> revoke grant option on *.* from mydba@"%";        //撤销授权用户mydba的授权权限

    mysql> show grants for.* from mydba@"%";        //发现用户mydba的授权权限消失

    客户端:

    [root@DB2 ~]# mysql -h192.168.233.130 -umydba -p123qqq...A

    mysql> grant all on *.* to yaya88@"%" identified by "123456";     //再用用户mydba对别的用户进行授权,发现报错访问被拒绝,因为此时用户mydba已经没有授权权限了,但是用户mydba还有其他权限

    ERROR 1045 (28000): Access denied for user 'mydba'@'%' (using password: YES)

    服务端:

    mysql> revoke delete on *.* from mydba@"%";       //撤销用户mydba的删除权限

    mysql> mysql> show grants for mydba@"%"\G;       //发现用户mydba没有delete权限了

    mysql> revoke all on *.* fromnts for mydba@"%";       //删除用户mydba所有的权限

    mysql> show grants for mydba@"%";、

    //如图所示,USAGE是指没有任何权限了,但是用户mydba还是存在的,还是可以登录的

    客户端:

    [root@DB2 ~]# mysql -h192.168.233.130 -umydba -p123qqq...A      //使用用户mydba登录数据库服务器

    mysql> show databases;      //查看所有的数据库,发现只能看见虚拟库information_schema

    删除授权用户

    服务端:

    mysql> drop user mydba@"%";      //删除授权用户mydba

    mysql> select host,user from mysql.user;      //已有的授权用户里已经没有mydba用户了

    客户端:

    [root@DB2 ~]# mysql -h192.168.233.130 -umydba -p123qqq...A    //出现错误:访问被拒绝。删除用户mydba后,就无法登录数据库服务器了

    mysql: [Warning] Using a password on the command line interface can be insecure.

    ERROR 1045 (28000): Access denied for user 'mydba'@'192.168.233.150' (using password: YES)

    root密码

    恢复root密码

    • root密码忘了怎么办?

    1、停止MySQL服务程序

    2、跳过授权表启动MySQL服务程序

    3、修改root密码

    4、以正常方式重启MySQL服务程序

    1、停止MySQL服务程序

    [root@DB ~]# systemctl stop mysqld

    2、修改数据库服务主配置文件

    [root@DB ~]# vim /etc/my.cnf

    [mysqld]

    skip-grant-tables #跳过授权表

    #validate_password_policy=0 #如果修改了密码策略就注释掉,没有修改过密码策略就不用管了

    #validate_password_length=6

    //注:如果修改了密码策略,把密码策略注释掉,否则启动服务会失败

    3、重启服务,跳过授权表登录数据库

    [root@DB ~]# systemctl start mysqld

    [root@DB ~]# mysql

    4、修改root密码

    mysql> desc mysql.user;

    //注:authentication_string字段是用来存密码的

    mysql> select host,user,authentication_string from mysql.user;

    mysql> update mysql.user set authentication_string=password("123qqq...A")

    -> where host="localhost" and user="root"; //修改数据库root密码

    mysql> flush privileges; //刷新权限表,保证修改生效

    mysql> exit

    5、修改数据库主配置文件,正常启动数据库

    [root@DB ~]# vim /etc/my.cnf

    [mysqld]

    #skip-grant-tables //注释跳过授权表

    [root@DB ~]# systemctl restart mysqld

    [root@DB ~]# mysql -uroot -p123qqq...A

    修改(重置)root密码

    • 在Shell命令行修改登录密码

    —— 需要验证旧密码

    [root@DB ~]# mysqladmin -hlocalhost -uroot -p password "123456" //mysqladmin是修改管理员密码的命令,注意新密码是需要加密的,password是加密函数。此处的新密码要符合密码策略,除非修改了密码策略

    Enter password: //此处输入的是旧的数据库管理员密码,而且此处是不显示密码的

    mysqladmin: [Warning] Using a password on the command line interface can be insecure.

    Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety.

    //waring警告:此处密码是明文的,没有使用加密传输,是不安全的

    进行验证:

    [root@DB ~]# mysql -uroot -p123qqq...A //修改完成后旧密码就登录不上了

    mysql: [Warning] Using a password on the command line interface can be insecure.

    ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

    [root@DB ~]# mysql -uroot -p123456 //使用新密码登录

    展开全文
  • 如何删除MySQL用户帐户

    千次阅读 2021-01-18 21:03:37
    MySQL允许您创建多个用户帐户并授予适当的权限,以便用户可以连接和管理数据库。如果不再需要用户帐户,则最好删除用户权限或完全删除用户帐户。本教程介绍如何删除MySQL/MariaDB用户帐户。DROP USER语句在MySQL中,...

    MySQL允许您创建多个用户帐户并授予适当的权限,以便用户可以连接和管理数据库。如果不再需要用户帐户,则最好删除用户权限或完全删除用户帐户。

    本教程介绍如何删除MySQL/MariaDB用户帐户。

    DROP USER语句

    在MySQL中,您可以使用DROP USER语句删除一个或多个用户并分配权限。 该语句的一般语法如下:

    DROP USER [IF EXISTS] USER_ACCOUNT [, USER_ACCOUNT] ...

    例如,要删除linux@localhost用户帐户登录到MYSQL shell并运行:

    mysql> DROP USER 'linux'@'localhost';

    成功后,命令将返回:

    Query OK, 0 rows affected (0.00 sec)

    如下图:

    918e6a4d8c390d61a98c96b0147698de.png

    要在单个命令中删除多个用户帐户,请运行DROP USER语句,然后运行要按空格分隔的要删除的用户:

    DROP USER 'linux@localhost' 'linuxidc@localhost';

    如果您尝试删除不存在的用户帐户并且未使用IF EXISTS子句,则该命令将返回错误。

    如果您尝试删除的用户当前已登录,则不会关闭用户会话,并且用户将能够运行查询,直到会话结束。 会话关闭后,用户将被删除,它将无法再登录MySQL服务器。

    不会自动删除用户创建的数据库和对象。

    删除MySQL用户帐户

    本节分步说明如何列出和删除MySQL用户帐户。

    首先,使用root或其他管理用户登录MySQL shell。 为此,请键入以下命令:

    sudo mysql

    如果您使用旧的本机MySQL身份验证插件以root身份登录,请运行以下命令并在出现提示时输入密码:

    mysql -u root -p

    以下命令在MySQL shell中执行。

    MySQL在mysql数据库的用户表中存储有关用户的信息。 使用以下SELECT语句获取所有MySQL用户帐户的列表:

    SELECT User, Host FROM mysql.user;

    输出应该如下所示:

    mysql> SELECT User, Host FROM mysql.user;

    +------------------+-----------+

    | User | Host |

    +------------------+-----------+

    | linuxmi | % |

    | linux | localhost |

    | linuxidc | localhost |

    | mysql.infoschema | localhost |

    | mysql.session | localhost |

    | mysql.sys | localhost |

    | root | localhost |

    +------------------+-----------+

    7 rows in set (0.01 sec)

    a9a849c56c914a7af9b2b144e9776127.png

    在MySQL中,用户帐户由用户名和主机名部分组成。linuxidc@localhost 和 linuxidc@192.168.1.133是不同的用户帐户。

    假设不再需要linuxidc@localhost用户帐户,我们希望将其删除。

    要删除用户运行:

    DROP USER 'linuxidc'@'localhost'

    输出

    Query OK, 0 rows affected (0.00 sec)

    该命令将删除用户帐户及其权限。

    现在用户已被删除,您可能还想删除与该用户关联的数据库。

    总结

    要删除MySQL用户帐户,请使用DROP USER语句,后跟要删除的用户的名称。

    如果您有任何问题或反馈,请随时发表评论。

    0b1331709591d260c1c78e86d0c51c18.png

    展开全文
  • MySQL用户创建、登录等(超详细)

    千次阅读 2021-05-02 19:55:39
    MySQL用户的添加、删除、登录、权限设置等内容 如何添加用户 如何查看用户、如何查看当前用户 如何登录其他用户(通过控制台登录,前提是MySQL环境变量已经配置)

    MySQL用户的添加、删除、登录、权限设置等内容

    引言
     本文将就MySQL的用户操作相关进行解析和实例操作,内容包括用户的增、删、改,用户权限的增、删等。

    注:以下操作中均在Windows10—MySQL8.0版本下运行,如版本不同可能会有命令报错等问题
    以下所有的代码操作均经过了笔者的亲自测试检验

    添加用户

    输入格式

    create user 'user01' @'localhost' identified by 'user01';
    

    输出

    mysql> create user 'user01'@'localhost' identified by'user01';
    Query OK, 0 rows affected (0.01 sec)
    

    注:用户的添加修改删除等操作都是在root权限下操作的!

    删除用户

    输入格式

    drop user ‘user01’@’localhost’;
    

    注:此步操作后要重新创建一个名为user01的用户,否则后面的操作无法进行!

    查看所有用户

    输入格式

    select user,host from mysql.user;
    

    输出

    mysql> select user,host from mysql.user;
    +------------------+-----------+
    | user             | host      |
    +------------------+-----------+
    | user01           | localhost |
    | mysql.infoschema | localhost |
    | mysql.session    | localhost |
    | mysql.sys        | localhost |
    | root             | localhost |
    +------------------+-----------+
    5 rows in set (0.00 sec)
    

    查看当前用户

    输入格式

    select current_user();select user();
    

    这里的user()是个函数,相当于调用了此函数去查询当前用户的信息

    输出

    mysql> select current_user;
    +----------------+
    | current_user   |
    +----------------+
    | root@localhost |
    +----------------+
    1 row in set (0.00 sec)
    

    注:此时是在root用户下查看的,因此显示的是root用户信息。接下来我们要进行登录操作,登录刚刚创建的新用户。登录此用户前,电脑必须已经配置好MySQL的环境变量,不知道如何配置的小伙伴可以到百度上查阅或者查看我前面写过的文章《MySQL环境变量的配置》。

    登录新用户

    • 通过cmd控制台使用MySQL命令进行用户名的输入和密码的输入。

    输入格式

    mysql -u user01 -p
    
    • 回车后,然后输入密码刚刚设置的密码123456,这样就登录成功了。
      输出如下图
      在这里插入图片描述

    修改用户名

    注:对用户进行修改等操作也都是在root权限下的,因此我们还要重新回到root权限下的控制台。

    这里我们将用户名user01修改为User01。

    输入格式

    rename user 'user01'@'localhost' to 'User01'@'localhost';
    

    然后我们查看用户名,检查是否修改成功。

    输入格式

    select user from mysql.user;
    

    输出

    mysql> select user from mysql.user;
    +------------------+
    | user             |
    +------------------+
    | User01           |
    | mysql.infoschema |
    | mysql.session    |
    | mysql.sys        |
    | root             |
    +------------------+
    5 rows in set (0.00 sec)
    

    通过结果我们看到用户名已经修改成功了。

    修改用户密码

    这里我们把原密码user01修改为User01。
    输入格式

     alter user 'User01'@'localhost' identified by 'User01';
    

    可以通过重新打开cmd控制台登录,检查密码修改是否成功。

    查看用户权限

    这里我们查看刚刚用户的权限。

    注:查看权限也需要在root权限下!

    输入格式

    show grants for ‘User01’@’localhost’;
    

    输出

    mysql> show grants for 'User01'@'localhost';
    +--------------------------------------------+
    | Grants for User01@localhost                |
    +--------------------------------------------+
    | GRANT USAGE ON *.* TO `User01`@`localhost` |
    +--------------------------------------------+
    1 row in set (0.00 sec)
    

    添加权限

    添加权限是指,将root用户的数据库读取等权限赋予你所指定的用户。

    1.我们先查看一下root用户的数据库有哪些内容;

    mysql> show databases;
    +--------------------+
    | Database           |
    +--------------------+
    | bank               |
    | information_schema |
    | mysql              |
    | performance_schema |
    | sys                |
    | test               |
    | testjoin           |
    +--------------------+
    7 rows in set (0.02 sec)
    

    2.可以看到有一个test数据库,我们进入到test里面查看test有哪些列表;

    注:这里的test是事先已经创建好了的,你可以自己创建一个任意的库用来进行测试。

    +----------------+
    | Tables_in_test |
    +----------------+
    | course         |
    | grade          |
    | score          |
    | student        |
    | teacher        |
    +----------------+
    

    3.可以看到有一个score,现在我们拿score做例子,演示一下将test下的score权限给User01。

    grant all on test.score to 'User01'@'localhost';
    //这里的all是指将test.score的所有权限都给User01
    

    4.权限赋予给User01后,我们需要进入User01账户,通过控制台输入用户名和密码进入。进入后我们查看数据库;

    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | test               |
    +--------------------+
    

    5.可以看到,这里已经显示有test数据库的信息了,我们再进入test里面;通过输出可以看到,我们已经能够访问到score列表了;

    mysql> use test
    Database changed
    mysql> show tables;
    +----------------+
    | Tables_in_test |
    +----------------+
    | score          |
    +----------------+
    1 row in set (0.00 sec)
    

    6.如果想继续查看的话,可以通过查找命令查看score内的所有内容,这里就不继续演示了。

    撤销权限

    输入格式

    revoke all on test.score from 'User01'@'localhost';
    

    在User01用户下刷新权限,然后查看数据库可以检查权限是否撤销成功。撤销权限的格式还有其他的形式,但大概也都与此类似,有兴趣的可以查阅相关资料了解。

    tip

    小tip
    刷新系统权限表,即时生效

    flush privileges;
    

    好了,到这里所有相关内容都已经介绍完毕啦!如果有疑问、不懂的地方或者其他问题都可以在评论区留言评论;感谢您的阅读~

    展开全文
  • Linux查看mysql用户和组

    千次阅读 2020-05-04 17:21:31
    1.查看是否存在MySQL组: [root@hadoop03 ~]# grep mysql /etc/group mysql:x:501: 注:mysql是组名,x是密码段,表示没有设置密码,501表示的是GID(组id) 2.不存在创建MySQL组: #创建mysql组 [root@hadoop03 ~]# ...
  • 1.使用mysql命令登录root用户 [root@izwz91h49n3mj8r232gqwez ~]# mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 36 Server version...
  • MySQL用户IP授权

    千次阅读 2019-06-10 20:08:03
    1、登录mysql,然后执行下面的语句进行授权。 GRANT ALL PRIVILEGES ON *.* TO root@"192.168.10.111" IDENTIFIED BY "yourpassword" WITH GRANT OPTION; 注意: 192.168.10.111:为需要访问该数据库的IP。 your...
  • 在windows下,MySQL多次登录错误,让该用户锁定10分钟,有没有直接通过命令设置的
  • 使用Navicat创建MySQL用户并授权

    千次阅读 2019-01-14 16:42:11
    使用Navicat创建MySQL用户并授权 调用命令窗口(工具->命令列界面) 创建数据库testdb create database testdb default character set utft8; 创建用户(用户名zerotest,密码hj123456) create user ...
  • 如何查看MySQL用户权限

    万次阅读 多人点赞 2018-05-23 16:34:34
    (1)查看MySQL某个用户的权限:show grants for 用户名MariaDB [neutron]> show grants for root;(2)用GRANT命令建立新用户、设定用户密码、并增加用户权限。其格式如下:mysql> GRANT <...
  • 1305错误,由于当前用户没用权限,对用户进行授权后可以执行。 解决 MySQL创建存储过程/函数需要的权限: alter routine---修改与删除存储过程/函数 create routine--创建存储过程/函数 execute--调用存储过程/...
  • MySQL 赋予用户权限命令的简单格式可概括为:grant 权限 on 数据库对象 to 用户一、grant 普通数据用户,查询、插入、更新、删除 数据库中所有表数据的权利。grant select on testdb.* to common_user@'%' grant ...
  • 如何使用Navicat修改mysql用户密码?

    万次阅读 2018-11-04 23:45:55
    下面介绍如何使用Navicat修改mysql用户密码的具体操作方法。 工具/原料 Navicat Premium 方法/步骤 打开Navicat 打开mysql数据库连接 点击工具栏中的【用户】 此...
  • Mysql用户权限host修改

    千次阅读 2018-01-18 14:52:12
    今天修改了MySQL密码发现死活都登不上去,然后去查看host信息时: SELECT user,host,password from user ...INSERT INTO mysql.user(Host,User,Password) VALUES("%","root",PASSWORD("junwa")); 然后更新一下: fl
  • 切换到Mysql用户后显示:-bash-4.2$,不显示用户名路径原因:因安装Mysql是用rpm包的方式安装,mysql用户是默认安装到了/var/lib/mysql目录[root@mwm skel]# cat /etc/passwd |grep mysqlmysql:x:987:982:MySQL ...
  • MySQL用户管理 【例1.1】使用root用户登录到本地mysql服务器的test库中 mysql -uroot -p -hlocalhost test 【例1.2】使用root用户登录到本地mysql服务器的test库中,执行一条查询语句 mysql -uroot -p -hlocalhost...
  • 方法一:(适用于管理员或者有全局权限的用户重设其它用户的密码)进入命令行模式mysql -u root -pmysql>use mysql;mysql> UPDATE user SET password=PASSWORD("new password") WHERE user='...
  • MySQL 赋予用户权限命令的简单格式可概括为:grant 权限 on 数据库对象 to 用户 一、grant 普通数据用户,查询、插入、更新、删除 数据库中所有表数据的权利。 grant select on testdb.* to common_user@'%' grant ...
  • 一般设置mysql用户权限我们可以在客户端中操作,很方便,不过有时候为了提升数据库安全,会限制远程给用户授权,这时候我们就需要登录到服务器上面设置用户权限。例如在linux上配置用户权限,如下 1,先登录,mysql...
  • mysql切换用户

    千次阅读 2021-01-18 18:41:54
    环境:MySql 5.51、切换用户:第一种方法1、dos进入mysql安装bin目录下: cd C:\Program Files\MySQL\MySQL Server 5.5\bin2、输入:mysql -uroot -p db3、输入用户密码-------------------------------------------...
  • 不要直接使用 root 用户管理应用数据 ... 在 mysql.user 表里可以查看到新增用户的信息: select User, Host, Password from mysql.user where User = 'zhangsan'; 授权 命令格式: grant privileges
  • MySQL如何创建用户

    万次阅读 2022-03-15 21:26:42
    创建普通用户,必须有相应的权限来执行创建操作。MySQL提供了三种创建普通的用户方法,分别是create user,grant 和直接操作mysql授权表
  • MySQL查看所有用户 - MySQL 系列教程

    千次阅读 2021-01-28 01:27:17
    在使用 MySQL 或其它关系型数据库的时候,免不了需要查看所有用户的信息,比如这些用户分别有什么权限,何时创建的之类。这篇文章里我们讨论,如何在 MySQL 中查看所有用户的信息。SHOW DATABASES不幸的是,MySQL...
  • MySQL用户权限管理

    万次阅读 2016-07-04 18:31:59
    原文链接:http://blog.csdn.net/xyang81/article/details/51822252用户权限管理主要有以下作用: 1. 可以限制用户访问哪些库、哪些表 ... 可以限制用户自己的权限是否可以授权给别的用户一、用户授权
  • MySQL修改用户密码

    千次阅读 2021-10-25 09:26:57
    MySQL5.7.17 1.1、普通用户的管理 (1)使用create user语句创建普通用户: create user的基本语法格式为: create user user[identified by 'password';] 说明: a、user 的格式为:’user_name'@'host name'...
  • MySQL查看所有用户

    万次阅读 2021-08-20 09:39:17
    MySQL查看所有用户 列出所有用户 如下语句可以查询所有用户 SELECT user FROM 数据库的名字.user; 在这条语句中,我们从mysql数据库的用户表中查询用户的数据.在这里要注意数据库的名字,在执行的时候要注意. ...
  • mysql创建新用户并授权

    万次阅读 2022-05-19 22:00:00
    我们在使用mysql的过程中,经常需要对用户授权(添加,修改,删除),在mysql当中有三种方式实现 分别是 INSERT USER表的方法、CREATE USER的方法、GRANT的方法。今天主要看一下grant方法是如何实现的 分两种情况,第...
  • MySQL如何更改用户密码

    万次阅读 2021-01-19 13:20:55
    MySQL中,可以使用3种不同的语句更改用户帐户密码:1、UPDATE2、SET PASSWORD3、ALTER USER但在更改帐户密码之前,应记住两件非常重要的事情:1、要更改密码的用户帐户详细信息。2、正在更改密码的用户正在使用该...
  • mysql用户权限如何授权

    千次阅读 2021-01-18 19:40:53
    mysql用户权限如何授权发布时间:2020-06-02 17:24:55来源:51CTO阅读:211作者:三月下面一起来了解下mysql用户权限如何授权,相信大家看完肯定会受益匪浅,文字在精不在多,希望mysql用户权限如何授权这篇短...
  • mysql如何删除用户

    千次阅读 2021-02-08 03:50:45
    mysql删除用户的方法:1、使用“drop user 用户名;”命令删除;...mysql删除用户的方法:1、drop删除drop user XXX;删除已存在的用户,默认删除的是'XXX'@'%'这个用户,如果还有其他的用户如'XXX'@...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,237,108
精华内容 494,843
关键字:

mysql用户

mysql 订阅
友情链接: NN聊天组件.zip