Postgres和MySQL建立使用者並授予db許可權
阿新 • • 發佈:2018-12-15
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;