异想之旅:本人原创博客完全手敲,绝对非搬运,全网不可能有重复;本人无团队,仅为技术爱好者进行分享,所有内容不牵扯广告。本人所有文章仅在CSDN、掘金和个人博客(一定是异想之旅域名)发布,除此之外全部是盗文!
全文约定数据库名为 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可登录