1. 程式人生 > >Postgres和MySQL建立使用者並授予db許可權

Postgres和MySQL建立使用者並授予db許可權

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 [email protected]'%';
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;