Skip to content

MySQL 和 PostgreSQL 数据库的运维笔记

全文约定数据库名为 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可登录

Ukraine 在俄罗斯对乌克兰发动的野蛮的侵略战争中矢志不渝地支持乌克兰