mysql grant授权与update密码
习惯了使用Navicat For MySQL之类的工具带来的便利,所以对mysql在命令行下的操作渐于生梳 。之前虽然mysql也对外不公开,不过可以使用Navicat For MySQL提供的ssh连接直连到现网的主机上,再进行操作 。但目前在设置过堡垒机和安全优化后,不需要对公的 mysql 不但取消了公网IP ,而且隐于堡垒机之后 。这样再使用工具就不好操作了 。以至于要新增用户,一时连grant授权和update密码都不知道怎么用了。
一、grant授权
grant命令的格式:grant 权限on 数据库对象to 用户
例如,给一个名为common的用户,让其在任意主机上可以连接到testdb上进行查询、插入、更新、删除操作,具体grant 如下:
1grant select on testdb.* to common@'%'
2grant insert on testdb.* to common@'%'
3grant update on testdb.* to common@'%'
4grant delete on testdb.* to common@'%'
其中的%号表示任意主机 ,对一段IP设置为 192.168.0.%,对本机设置,后面就换为localhost 。不过上面的写法太繁琐,完全也可以用一条命令完成操作:
1grant select, insert, update, delete on testdb.* to common@'%'
平时常用的权限如下图:
该图是使用Navicat For MySQL 工具操作时,截的一个图 。出于安全考虑,一般的程序只需select 、insert、update、delete、index、create tmp tables 或者create view几个权限完全够用了。没必要赋予更大的权限 ,程序有特别需要例外 。
想赋予上面提到的几个权限可以如下sql语句完成:
1CREATE USER '361way'@'192.168.0.%' IDENTIFIED BY '12345';
2grant select,insert,update,delete,create,index,trigger,create temporary tables on sky.* to '361way'@'192.168.0.%';
3FLUSH PRIVILEGES;
注:特别注意下创建临时表的权限和上图上的不一致 。具体详细用法也可以参看官方文档 。
二、查看用户及所授权限
如果想查看给所有用户,可以查看mysql.user表,查看具体用户所授予的权限,可以使用show grants命令。
1、查看所有用户
1mysql> SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user;
2+---------------------------------------+
3| query |
4+---------------------------------------+
5| User: 'cactiuser'@'%'; | |
6| User: 'dba'@'%'; |
7| User: 'root'@'%'; |
8| User: 'slave'@'%'; |
9| User: 'root'@'127.0.0.1'; |
10| User: 'root'@'192.168.166.200'; |
11……………………………………省略
2、查看授权及权限回收
1mysql> show grants for 'cactiuser'@'%';
2+-------------------------------------------------------------------------------------------------------------------+
3| Grants for cactiuser@% |
4+-------------------------------------------------------------------------------------------------------------------+
5| GRANT PROCESS, SUPER ON *.* TO 'cactiuser'@'%' IDENTIFIED BY PASSWORD '*DAFF917B80E3314B1ABECBA9DF8785AFD342CE89' |
6| GRANT ALL PRIVILEGES ON `cacti`.* TO 'cactiuser'@'%' |
7+------------------------------------------------------------------------------------------------------------------
默认使用show grants命令,后面不加参数时,查看的是root用户的权限信息 。也可以通过查看mysql.user表查看详细的权限信息:
1mysql> select * from mysql.user where user='cactiuser' G
2*************************** 1. row ***************************
3 Host: %
4 User: cactiuser
5 Password: *DAFF917B80E3314B1ABECBA9DF8785AFD342CE89
6 Select_priv: N
7 Insert_priv: N
8 Update_priv: N
9 Delete_priv: N
10 Create_priv: N
11 Drop_priv: N
12 Reload_priv: N
13 Shutdown_priv: N
14 Process_priv: Y
15 File_priv: N
16 Grant_priv: N
17 References_priv: N
18 Index_priv: N
19 Alter_priv: N
20 Show_db_priv: N
21 Super_priv: Y
22Create_tmp_table_priv: N
mysql.user表所具有的字段可以通过desc查看:
1mysql> desc mysql.user;
2+-----------------------+-----------------------------------+------+-----+---------+-------+
3| Field | Type | Null | Key | Default | Extra |
4+-----------------------+-----------------------------------+------+-----+---------+-------+
5| Host | char(60) | NO | PRI | | |
6| User | char(16) | NO | PRI | | |
7| Password | char(41) | NO | | | |
8| Select_priv | enum('N','Y') | NO | | N | |
9+-----------------------+-----------------------------------+------+-----+---------+-------+
1039 rows in set (0.00 sec)
想要查看当前所登陆使用的用户可以使用select user() :
1mysql> select user();
2+----------------+
3| user() |
4+----------------+
5| root@localhost |
6+----------------+
71 row in set (0.00 sec)
想要收回某些权限,可以使用REVOKE 命令,其用法同grants类似 。也可以使用help revoke查看用法 。
三、更新密码
1、mysql shell下更改密码
1mysql> use mysql;
2mysql>SET PASSWORD FOR 'user-name-here'@'hostname-name-here' = PASSWORD('new-password-here');
3
4或者使用update语句:
5UPDATE mysql.user SET Password=PASSWORD('new-password-here') WHERE User='user-name-here' AND Host='host-name-here';
6
7例如更新tom用户的密码为foobar:
8SET PASSWORD FOR 'tom'@'localhost' = PASSWORD('foobar');
9或
10UPDATE mysql.user SET Password=PASSWORD('foobar') WHERE User='tom' AND Host='localhost';
11
12更改完成后,想要立即重载权限,可以使用下面的命令操作:
13FLUSH PRIVILEGES;
2、mysqladmin命令修改法:
1mysqladmin -u用户名 -p 密码 password 新密码 ;
使用该方法的一个缺点就是需要知道原密码 。
捐赠本站(Donate)
如您感觉文章有用,可扫码捐赠本站!(If the article useful, you can scan the QR code to donate))
- Author: shisekong
- Link: https://blog.361way.com/grant-update-password/2642.html
- License: This work is under a 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议. Kindly fulfill the requirements of the aforementioned License when adapting or creating a derivative of this work.