Summary of methods for querying MySQL user permissions

Summary of methods for querying MySQL user permissions

Introduce two methods to view MySQL user permissions

1. Use MySQL grants command

mysql> show grants for username@localhost;

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

| Grants for root@localhost |

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

| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION |

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

It should be noted that:

● The combination of username and ip must exist in the mysql.user table. You can check it by using the select * from mysql.user command.

● If the IP address is in wildcard format, it needs to be enclosed in quotation marks, for example: show grants for root@'172.%';

2. Use MySQL select command

mysql> select * from mysql.user where user='root' and host='localhost' \G;
*************************** 1. row ***************************
Host: localhost
User: root
Password: **********************
Select_priv: Y
Insert_priv: Y
Update_priv: Y
Delete_priv: Y
Create_priv: Y
Drop_priv: Y
Reload_priv: Y
Shutdown_priv: Y
Process_priv: Y
File_priv: Y
Grant_priv: Y
References_priv: Y
Index_priv: Y
Alter_priv: Y
Show_db_priv: Y
Super_priv: Y
Create_tmp_table_priv: Y
Lock_tables_priv: Y
Execute_priv: Y
Repl_slave_priv: Y
Repl_client_priv: Y
Create_view_priv: Y
Show_view_priv: Y
Create_routine_priv: Y
Alter_routine_priv: Y
Create_user_priv: Y
Event_priv: Y
Trigger_priv: Y
Create_tablespace_priv: Y
ssl_type:
ssl_cipher:
x509_issuer:
x509_subject:
max_questions: 0
max_updates: 0
max_connections: 0
max_user_connections: 0
plugin:mysql_native_password
authentication_string:
password_expired: N
1 row in set (0.01 sec)

Knowledge point expansion:

Let's create a test account test and grant table-level permissions

mysql> drop user test;
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql> grant all on MyDB.kkk to test@'%' identified by 'test';
Query OK, 0 rows affected (0.01 sec)
mysql> 
mysql> show grants for test;
+---------------------------------------------------------------------------------------------------------------------+
| Grants for test@% |
+---------------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'test'@'%' IDENTIFIED BY PASSWORD '*94BDCEBE19083CE2A1F959FD02F964C7AF4CFC29' |
| GRANT ALL PRIVILEGES ON `MyDB`.`kkk` TO 'test'@'%' |
+---------------------------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)
mysql> select * from mysql.tables_priv\G;
*************************** 1. row ***************************
Host: %
Db: MyDB
User: test
Table_name: kkk
Grantor: root@localhost
Timestamp: 0000-00-00 00:00:00
Table_priv: Select,Insert,Update,Delete,Create,Drop,References,Index,Alter,Create View,Show view,Trigger
Column_priv: 
1 row in set (0.01 sec)
ERROR: 
No query specified
mysql> <br>

Let's create a test account test and grant column-level permissions

mysql> drop user test;
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql> grant select (id, col1) on MyDB.TEST1 to test@'%' identified by 'test';
Query OK, 0 rows affected (0.01 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql> 
mysql> select * from mysql.columns_priv;
+------+------+------+------------+-------------+---------------------+-------------+
| Host | Db | User | Table_name | Column_name | Timestamp | Column_priv |
+------+------+------+------------+-------------+---------------------+-------------+
| % | MyDB | test | TEST1 | id | 0000-00-00 00:00:00 | Select |
| % | MyDB | test | TEST1 | col1 | 0000-00-00 00:00:00 | Select |
+------+------+------+------------+-------------+---------------------+-------------+
2 rows in set (0.00 sec)
mysql> show grants for test;
+---------------------------------------------------------------------------------------------------------------------+
| Grants for test@% |
+---------------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'test'@'%' IDENTIFIED BY PASSWORD '*94BDCEBE19083CE2A1F959FD02F964C7AF4CFC29' |
| GRANT SELECT (id, col1) ON `MyDB`.`TEST1` TO 'test'@'%' |
+---------------------------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)
mysql> <br>

This concludes this article on the summary of methods for querying MySQL user permissions. For more information about the two methods for querying MySQL user permissions, please search for previous articles on 123WORDPRESS.COM or continue to browse the following related articles. I hope you will support 123WORDPRESS.COM in the future!

You may also be interested in:
  • MySQL permission control detailed explanation
  • Detailed tutorial on how to create a user in mysql and grant user permissions
  • Mysql modify stored procedure related permissions issue
  • How to set remote access permissions in MySQL 8.0
  • How to use DCL to manage users and control permissions in MySQL
  • How to create users and manage permissions in MySQL
  • Example analysis of mysql user rights management
  • How to enable remote access permissions in MYSQL
  • The easiest way to create a new user and grant permissions to MySQL
  • Detailed explanation of MySQL user and permission management
  • MySQL permission control details analysis

<<:  Implementation of Docker private warehouse registry deployment

>>:  The order of event execution in the node event loop

Recommend

Docker's health detection mechanism

For containers, the simplest health check is the ...

Use CSS3 to implement button hover flash dynamic special effects code

We have introduced how to create a waterfall layo...

React event binding details

Table of contents Class component event binding F...

Introduction to the use of several special attribute tags in HTML

The following attributes are not very compatible w...

Learn about CSS label display mode in one article

Tag type (display mode) HTML tags are generally d...

Copy and paste is the enemy of packaging

Before talking about OO, design patterns, and the ...

Write a shopping mall card coupon using CSS in three steps

Today is 618, and all major shopping malls are ho...

HTML reuse techniques

HTML reuse is a term that is rarely mentioned. Tod...

Practical example of nested routes in vue.js Router

Table of contents Preface Setting up with Vue CLI...

React Router V6 Updates

Table of contents ReactRouterV6 Changes 1. <Sw...

Better looking CSS custom styles (title h1 h2 h3)

Rendering Commonly used styles in Blog Garden /*T...

How to use display:olck/none to create a menu bar

The effect of completing a menu bar through displ...

VUE introduces the implementation of using G2 charts

Table of contents About G2 Chart use Complete cod...

Share 20 excellent web form design cases

Sophie Hardach Clyde Quay Wharf 37 East Soapbox Rx...