MySQL 和 PostgreSQL 数据库的运维笔记
2022-10-03
全文约定数据库名为 dd ,表名为 tt ,用户名为 uu ,密码为 pp 。
下面为常用场景的命令。
创建用户
# MySQL
CREATE USER 'uu'@'%' IDENTIFIED BY 'pp'; # '%'表示可以从所有地址登录
CREATE USER 'uu'@'192.168.%.%' IDENTIFIED BY 'pp'; # 指定IP
CREATE USER 'uu'@'%' IDENTIFIED BY ''; # 无密码
# PostgreSQL
CREATE USER uu WITH PASSWORD 'pp';MySQL 在 SQL 中对用户的登录地址进行限制,而 PostgreSQL 则依赖更改配置文件 /etc/postgresql/14/main/pg_hba.conf 来实现。个人认为在这个方面,MySQL 更胜一筹。
列出所有用户
# MySQL
SELECT * FROM mysql.user;
SELECT user, host FROM mysql.user; # 简洁版
# PostgreSQL
\du创建数据库
CREATE DATABASE dd;进入数据库
# MySQL
USE dd;
# PostgreSQL
\c dd赋予 / 撤销用户某个数据库的权限
# MySQL
GRANT ALL ON dd.* TO uu@'%'; # 所有权限
GRANT SElECT ON dd.ttTO uu@'%'; # 指定操作 在 指定数据库和数据表 下的权限
# PostgreSQL
\c dd
# 所有权限——我不知道下面的哪个好用,似乎都需要执行
GRANT ALL ON ALL TABLES IN SCHEMA public TO uu;
GRANT ALL PRIVILEGES ON DATABASE dd TO uu;
GRANT ALL ON ALL SEQUENCES IN SCHEMA public TO uu;赋予 / 撤销用户所有数据库的权限
# MySQL
GRANT ALL ON *.* TO uu@'%';设置用户为超级用户
# PostgreSQL
ALTER USER uu WITH SUPERUSER;仅允许局域网登录
MySQL
CREATE USER 'uu'@'192.168.%。%' IDENTIFIED BY 'pp';
# 这条语句中如果 uu 是已有用户好像也是创建一个新的同名用户,权限、密码等均分开管理
# 如果要更新现有用户,请直接手写 UPDATE 语句更新 mysql.user 表的 host 字段(未经本人实测)PostgreSQL
# 配置文件中设置
host all all 192.168.0.0/16 trust # 所有以 192.168. 开头的IP可登录