sql >> データベース >  >> RDS >> Mysql

同じサーバー上のデータベース間でユーザー権限をコピーする

    付与されたすべての特権は、システムテーブルに保存されます。 --mysql.tables_priv、mysql.columns_priv、mysql.db...必要なすべての権限をコピーするスクリプトを作成できます。

    ユーザーがいるとします-

    CREATE USER 'user1'@'%';
    GRANT Insert ON TABLE database1.table1 TO 'user1'@'%';
    GRANT Execute ON PROCEDURE database1.procedure1 TO 'user1'@'%';
    

    次に、これらの権限をコピーして、データベース'database2'にアクセスできるようにします-

    -- Copy table's privileges
    INSERT INTO mysql.tables_priv SELECT host, 'database2', user, table_name, grantor, timestamp, table_priv, column_priv FROM mysql.tables_priv
      WHERE user = 'user1' AND host = '%' AND db = 'database1';
    
    -- Copy routine's privileges
    INSERT INTO mysql.procs_priv SELECT host, 'database2', user, routine_name, routine_type, grantor, proc_priv, timestamp FROM mysql.procs_priv
      WHERE user = 'user1' AND host = '%' AND db = 'database1';
    
    -- Do not forget to apply changes ;-)
    FLUSH PRIVILEGES;
    

    別のシステムテーブルについても同じようにします。




    1. PHP MySQLインジェクションの例をテストするにはどうすればよいですか?

    2. 任意のテーブルでIDをインクリメントする際に一連の文字列を追加するにはどうすればよいですか?

    3. 行の数値から1を引くSQLクエリ

    4. UNIXタイムスタンプフィールドの月ごとのグループ化