mysql创建用户权限表修改_mysql创建用户、删除用户、创建root用户和修改用户密码,grant分配权限,查询测试,以及库中授权表解析...

一、创建mysql用户

1 创建mysql数据库的管理用户

/usr/bin/mysqladmin -uroot password mopgaming

password前面一定不能--password,那是登录时需要输入的。如上命令回车即可。

2.1 创建一般用户,并授权 GRANT

工作中web服务器和mysql服务器不在同一台机器上,所以需要通过mysql的远程账户访问mysql

语法:

mysql> grant [权限1,权限2,..权限n] on [数据库名].[表名] to ['用户名']@['web服务器ip地址'] identified by ['密码'];

grant all privileges on lottery.* to test@'%' identified by 'mopgaming';

flush privileges;    刷新系统权限

授权test用户所有的权限,针对lottery数据库的所有表,test用户可以被任意ip登录,验证密码mopgmaing

grant select,update,create on lottery.* to test@x.x.x.x identified by 'mopgaming';

flush privileges;    刷新系统权限

授权test用户select,update,create权限,针对lottery数据库的所有表,并且只有指定ip(x.x.x.x)才能登录该用户,验证密码mopgaming

a.数据库操作权限,14个权限:

select,update,create,insert,delete,drop,index,alter,grant,references,reload,shutdown,process,file

也可以被all privileges或者all代替,赋予所有权限。

b.数据库表名称:

可以被 *.* 代替,表示针对该服务器上所有数据库和表授权

c.用户地址:

可以是localhost,只针对本地用户,可以在本地登录mysql。也可以是ip,hostname主机名,域名,针对指定主机授权,创建的用户不能本地mysql -uxxxx -p形式登录。也可以是  '%' ,表示授权任何主机连接,创建的用户不能本地mysql -uxxxx -p形式登录,‘10.10.86.%’指定给该网段的主机授权。

d.验证密码:

不能为空,否则创建失败,授权失败。

2.2 创建用户方法二

#create user 'xxx(用户名)'@'用户地址(ip/localhost/域名/%)' identified by 'xxx(验证密码)'

#mysql -uroot -pmopgaming

>cteate user test2@localhost identified by 'mopgaming';

>flush privileges;    刷新系统权限

该方法创建test2用户可以登上,但是没有授予mysql数据库任何操作权限,只能使用当前用户下生成的数据库。若再grant授权,则可以正常使用:

>grant all privileges on *.* to test2@'%' identified by 'mopgaming';

>flush privileges;    刷新系统权限

二、撤销用户权限

revoke 权限 on 库名.表名 from 用户名@用户地址;

mysql -uroot -p

>revoke select,insert on *.* from test2@'%';  撤销test2用户select,insert权限。

>revoke all on test.* from test2@'%';  撤销test2用户,针对test库的所有权限。

三、删除用户

1 直接删除用户 drop user:将用户信息全部删掉,包括user表和mysql.db表中的权限信息。

mysql -uroot -p

>drop user test1@'%';

>flush privileges;

2 删除用户 delete from user:只会清除对应user创建的表,其他比如db表中信息还是存在。(通过 >select * from db;还可以看到该用户对应的权限。如果delete删除该用户后,再最小权限创建一个同名的用户,那么会重用以前的权限。)

mysql -uroot -p

>use mysql;

>delete from user where user=test1 and host='%';

>flush privileges;

四、修改指定用户密码

#mysql -uroot -p

update mysql.user set password=password('新密码') where user="test2" and host="%";

flush privilieges;

修改指定用户密码的命令必须按照此格式。

五、远程访问测试授权的mysql用户

#mysql -hx.x.x.x(mysql服务器的ip) -uxxx(授权的用户名) -pxxx(验证密码)

mysql -h10.10.87.105 -utest2 -pmopgaming

Welcome to the MariaDB monitor.  Commands end with ; or \g.

Your MariaDB connection id is 18

Server version: 5.5.44-MariaDB MariaDB Server

copyright (c) 2000, 2015, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>

六、查询相关命令

1 查询mysql用户列表:

MariaDB [(none)]> select host,user from mysql.user;

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

| host         | user  |

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

| 127.0.0.1    | root  |

| ::1          | root  |

| localcentos7 |       |

| localcentos7 | root  |

| localhost    |       |

| localhost    | root  |

| localhost    | test1 |

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

MariaDB [(none)]> SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user;

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

| query                        |

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

| User: 'root'@'127.0.0.1';    |

| User: 'root'@'::1';          |

| User: ''@'localcentos7';     |

| User: 'root'@'localcentos7'; |

| User: ''@'localhost';        |

| User: 'root'@'localhost';    |

| User: 'test1'@'localhost';   |

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

2 查询授权状态:

#mysql -uroot -p

>use mysql;                说明数据库状态信息保存在mysql数据库下。

> select * from db;

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

| Host | Db      | User  | Select_priv | Insert_priv | Update_priv | Delete_pri

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

| %    | test    |       | Y           | Y           | Y           | Y

| %    | test\_% |       | Y           | Y           | Y           | Y       ..........

| %    | test    | test2 | Y           | Y           | N           | N

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

可见test2用户被授予的权限:只针对test数据库,有select,insert权限。

PS:mysql库中授权表解析

mysql授权表共有5个:user,db,host,tables_priv和columns_priv

每个表用途和内容”

user表:

列出服务器的用户及其口令,并且指出他们有那种权限。在user表总启用的权限都是全局权限,并适用所有数据库。例如,某用户启用delete权限,则可以在任何表中删除记录。

db表:

列出具体数据库对应的权限。在这里指定的权限适用于一个数据库中所有表。

host表:

host表和db表结合使用在一个较好层次上控制特定主机对数据库的访问权限。这个表不受grant和revoke语句的影响,所以,可能根本用不到。

tables_priv表

指定表级别的权限,在这里指定的一个权限适用于一个表的所有列。

columns_priv表

指定表内列级别的权限,在这里指定的权限适用于一个表的特定列。

参考资料:

1.Linux下给mysql创建用户分配权限

2.linux下创建mysql用户

3.MySql中添加用户,新建数据库,用户授权,删除用户,修改密码

4.MySQL中授权(grant)和撤销授权(revoke)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值