From 2d9bcfdaf047145803513928c4ec78f00e99b975 Mon Sep 17 00:00:00 2001
From: "p.belezov"
Date: Wed, 22 Jan 2025 17:22:37 +0800
Subject: [PATCH] MySQL users
---
MySQL/users.md | 101 +++++++++++++++++++++++++++++++++++++++++++++++++
Readme.md | 5 ++-
2 files changed, 104 insertions(+), 2 deletions(-)
create mode 100644 MySQL/users.md
diff --git a/MySQL/users.md b/MySQL/users.md
new file mode 100644
index 0000000..a11b235
--- /dev/null
+++ b/MySQL/users.md
@@ -0,0 +1,101 @@
+# MySQL users actions
+
+## Show users with hosts
+
+```
+SELECT User, Host FROM mysql.user;
+```
+
+## Check user privileges
+
+```
+SHOW GRANTS FOR 'someuser'@'somehost.somedomain';
+```
+
+## Create user
+
+```
+CREATE USER 'some_user'@'somehost.somedomain' IDENTIFIED BY 'some_password';
+FLUSH PRIVILEGES;
+```
+
+## Delete user
+
+```
+DROP USER 'some_user'@'somehost.somedomain';
+FLUSH PRIVILEGES;
+```
+
+## Granting privileges
+
+### Grant all privileges
+
+```
+GRANT ALL PRIVILEGES ON *.* TO 'some_user'@'somehost.somedomain' WITH GRANT OPTION;
+FLUSH PRIVILEGES;
+```
+
+### Grant privilege on database 'some_db'
+
+```
+GRANT SELECT ON `some_db`.* TO 'some_user'@'somehost.somedomain';
+FLUSH PRIVILEGES;
+```
+
+### Grant privilege on table 'some_db'.'some_table'
+
+```
+GRANT SELECT ON `some_db`.'some_table' TO 'some_user'@'somehost.somedomain';
+FLUSH PRIVILEGES;
+```
+
+### Grant privilege to select and update some columns on table 'some_db'.'some_table'
+
+```
+GRANT SELECT (id, some_column), UPDATE (some_column) ON `some_db`.`some_table` TO 'some_user'@'somehost.somedomain';
+```
+
+### Grant with inheritance
+
+```
+GRANT SELECT, INSERT, UPDATE, DELETE ON `some_db`.* TO 'some_user'@'somehost' WITH GRANT OPTION;
+FLUSH PRIVILEGES;
+```
+
+**'WITH GRANT OPTION'** makes it possible to convey to others what is permitted to oneself.
+
+## Revoking privileges
+
+### Revoke privilege to select from database 'somedb'
+
+```
+REVOKE SELECT ON `somedb`.* FROM 'someuser'@'somehost';
+FLUSH PRIVILEGES;
+```
+
+### Revoke all privileges from user
+
+```
+ALL PRIVILEGES ON *.* FROM 'someuser'@'somehost';
+FLUSH PRIVILEGES;
+```
+
+### Revoke all privileges to database 'somedb' from user
+
+```
+ALL PRIVILEGES ON `somedb`.* FROM 'someuser'@'somehost';
+FLUSH PRIVILEGES;
+```
+
+### Revoke all privileges from user
+
+```
+REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'someuser'@'somehost';
+FLUSH PRIVILEGES;
+```
+
+## Change password
+
+```
+ALTER USER 'test_user'@'localhost' IDENTIFIED BY 'new_password';
+```
\ No newline at end of file
diff --git a/Readme.md b/Readme.md
index 28e9c23..83bff03 100644
--- a/Readme.md
+++ b/Readme.md
@@ -4,10 +4,11 @@ This is a repository with useful snippets of various kinds of code
## Structure
--[Git](./src/branch/master/Git/)
+- [Git](./src/branch/master/Git/)
- - [stash](./src/branch/master/Git/stash.md)
- [Linux](./src/branch/master/Linux/)
- - [certbot_nginx](./src/branch/master/Linux/certbot_nginx.md)
- [MySQL](./src/branch/master/MySQL)
- - [all_foreign_keys_to_table_or_column](./src/branch/master/MySQL/all_foreign_keys_to_table_or_column.md)
-- - [identify_lock](./src/branch/master/MySQL/identify_lock.md)
\ No newline at end of file
+- - [identify_lock](./src/branch/master/MySQL/identify_lock.md)
+- - [users](./src/branch/master/MySQL/users.md)
\ No newline at end of file