Postgresql和MySQL還是有很多不同的。就比如授權來說。當下有個業務場景,我們的報表數據庫需要根據業務划分不同的db,然后創建對應的user。
如果是MySQL, 可以這樣做
mysql> create database mydb;
mysql> create user a_user identified by 'ThePassword'
-> ;
Query OK, 0 rows affected (0.04 sec)
mysql> grant all privileges on mydb.* to a_user@'%';
Query OK, 0 rows affected (0.02 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)
對於Postgres9.0以上
創建一個用戶etl_user
,允許登陸,永不過期
create role etl_user login password 'ThePassowrd' valid until 'infinity';
將db權限授予user
grant all privileges on database mydb to etl_user ;
或者,分別授權
GRANT CONNECT ON DATABASE mydb TO etl_user;
GRANT USAGE ON SCHEMA public TO etl_user;
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO etl_user;
GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public TO etl_user;
這時候,如果你要刪除這個role,則必須先要刪除關聯的privileges
REVOKE CONNECT ON DATABASE mydb FROM etl_user;
REVOKE ALL PRIVILEGES ON ALL TABLES IN SCHEMA public FROM etl_user;
REVOKE ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public FROM etl_user;
REVOKE ALL PRIVILEGES ON ALL FUNCTIONS IN SCHEMA public FROM etl_user;
DROP USER etl_user;