it-swarm-eu.dev

Jak automaticky udělím všechna oprávnění schématu vytvořenému uživatelem v mysql?

Do společnosti se připojil někdo nový a vytvořil jsem pro ni účet v mysql pomocí následujícího:

CREATE USER 'username' IDENTIFIED BY 'password'

Potřebuje si vytvořit své vlastní schéma a použít tak:

GRANT CREATE ON *.* TO username;

Problém je v tom, že nyní je schopna vytvářet nová schémata a tabulky, ale s tím nemůže nic dělat. Chtěl bych, aby neměla přístup k existujícím schématům/tabulkám, ale mohla si vytvořit vlastní db a dělat s tím cokoli. Je to možné?

7

Chcete-li udělit všechna práva v databázi mydbusername

GRANT ALL PRIVILEGES ON mydb.* TO username;

Chcete-li udělit privs na stole mydb.mytableusername

GRANT ALL PRIVILEGES ON mydb.mytable TO username;

Navrhuji, abyste nejprve upustili uživatele, abyste odstranili všechna oprávnění pro celý server.

DROP USER username;
CREATE USER username;
GRANT ALL PRIVILEGES ON mydb.* TO username;

Proč uživatele upustit jako první? Když poprvé vytvoříte uživatele s názvem username a přihlašovací jméno, nemá uživatelské jméno žádné privs. Prostě běž SHOW GRANTS; vidět to. Mělo by to říkat něco jako GRANT USAGE ON *.* TO username. V tuto chvíli se může username přihlásit pouze. To je vaše šance na vytvoření oprávnění.

Pokud spustíte

GRANT ALL PRIVILEGES ON *.* TO username;

uživatelské jméno bude mít globální databázová oprávnění (všechny databáze)

Pokud spustíte

GRANT ALL PRIVILEGES ON mydb.* TO username;

username bude mít oprávnění pro celou databázi pouze pro databázi mydb.

Pokud spustíte

GRANT ALL PRIVILEGES ON mydb.mytable TO username;

uživatelské jméno bude mít oprávnění tabulky pouze na mydb.mytable.

Nemůžete je smíchat. Pokud náhodou sklouznete username oprávnění, která username by neměla mít.

Pokud chcete vidět, jaká oprávnění existují na třech úrovních, spusťte následující dotazy

SELECT table_name,column_name
FROM information_schema.columns
WHERE table_schema='mysql'
AND table_name IN ('user','db','tables_priv')
AND column_name LIKE '%\_priv'
ORDER BY table_name,column_name;

Zde jsou priváty pro MySQL 5.5

mysql> SELECT table_name,column_name
    -> FROM information_schema.columns
    -> WHERE table_schema='mysql'
    -> AND table_name IN ('user','db','tables_priv')
    -> AND column_name LIKE '%\_priv'
    -> ORDER BY table_name,column_name;
+-------------+------------------------+
| table_name  | column_name            |
+-------------+------------------------+
| db          | Alter_priv             |
| db          | Alter_routine_priv     |
| db          | Create_priv            |
| db          | Create_routine_priv    |
| db          | Create_tmp_table_priv  |
| db          | Create_view_priv       |
| db          | Delete_priv            |
| db          | Drop_priv              |
| db          | Event_priv             |
| db          | Execute_priv           |
| db          | Grant_priv             |
| db          | Index_priv             |
| db          | Insert_priv            |
| db          | Lock_tables_priv       |
| db          | References_priv        |
| db          | Select_priv            |
| db          | Show_view_priv         |
| db          | Trigger_priv           |
| db          | Update_priv            |
| tables_priv | Column_priv            |
| tables_priv | Table_priv             |
| user        | Alter_priv             |
| user        | Alter_routine_priv     |
| user        | Create_priv            |
| user        | Create_routine_priv    |
| user        | Create_tablespace_priv |
| user        | Create_tmp_table_priv  |
| user        | Create_user_priv       |
| user        | Create_view_priv       |
| user        | Delete_priv            |
| user        | Drop_priv              |
| user        | Event_priv             |
| user        | Execute_priv           |
| user        | File_priv              |
| user        | Grant_priv             |
| user        | Index_priv             |
| user        | Insert_priv            |
| user        | Lock_tables_priv       |
| user        | Process_priv           |
| user        | References_priv        |
| user        | Reload_priv            |
| user        | Repl_client_priv       |
| user        | Repl_slave_priv        |
| user        | Select_priv            |
| user        | Show_db_priv           |
| user        | Show_view_priv         |
| user        | Shutdown_priv          |
| user        | Super_priv             |
| user        | Trigger_priv           |
| user        | Update_priv            |
+-------------+------------------------+
50 rows in set (0.01 sec)

mysql>

Spusťte dotaz a prohlédněte si privs pro 5.1 a 5.0

6
RolandoMySQLDBA
CREATE TABLESPACE dwtblspc LOGGING DATAFILE 'D:\oraclexe\app\Oracle\oradata\XE\DWTBLSPC.DBF' SIZE 300M AUTOEXTEND ON NEXT 1048K MAXSIZE UNLIMITED;

CREATE USER prateek IDENTIFIED  by prateek DEFAULT TABLESPACE dwtblspc ACCOUNT UNLOCK;

GRANT unlimited tablespace to prateek ;

CREATE ROLE prateek_role;

GRANT CREATE SESSION,ALTER SESSION,CREATE TABLE,CREATE CLUSTER,CREATE SYNONYM,CREATE VIEW,CREATE SEQUENCE,
CREATE DATABASE LINK,CREATE PROCEDURE,CREATE TRIGGER,CREATE TYPE,CREATE OPERATOR,CREATE INDEXTYPE,BACKUP ANY TABLE,
SELECT ANY TABLE,CREATE ANY TABLE,CREATE ANY INDEX,ALTER ANY INDEX,ALTER ANY INDEXTYPE,DROP ANY INDEX,DROP ANY INDEXTYPE to prateek_role;

GRANT prateek_role to prateek ;

Doufám, že to pomůže. Doufám, že to pomůže.

1
Sai prateek