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

MySQLでデータベースのすべての権限を付与する方法

    MySQLで権限の編集を開始するには、最初にサーバーにログインしてから、mysqlに接続する必要があります。 クライアント。通常、rootに接続する必要があります または、MySQLのインストール全体を通じてフルアクセス権を持つ最初の「スーパーユーザー」アカウントであるアカウント。

    通常、root MySQLのインストール時にユーザーに認証パスワードが割り当てられますが、そうでない場合は、rootを追加してセキュリティを強化する手順を実行する必要があります。 公式ドキュメントに示されているパスワード。

    MySQLコマンドラインツールへの接続

    この例では、rootを想定しています。 プライマリMySQLアカウントです。 MySQLコマンドラインツール(mysqlcli)の使用を開始するには )、rootとしてサーバーに接続します ユーザー、次にmysqlを発行します コマンド:

    $ mysql
    Welcome to the MySQL monitor.  Commands end with ; or \g.
    Your MySQL connection id is 112813
    Server version: 5.5.43-0ubuntu0.14.04.1 (Ubuntu)
    [...]
    mysql>
    

    成功すると、MySQL接続に関する出力が表示され、mysqlが下向きになります。 プロンプト。

    注:rootとしてサーバーに直接接続できない場合 mysqlに接続する前のユーザー 、接続するユーザーを名前で指定できます --user=を追加する フラグ:

    $ mysql --user=username
    
    特権の付与

    これで、mysqlcliに移動しました。 プロンプトが表示されたら、GRANTを発行するだけです。 適切な権限を適用するために必要なオプションを指定してコマンドを実行します。

    特権タイプ

    GRANT コマンドは、CREATE機能から、さまざまな特権を適用できます。 テーブルとデータベース、FILESの読み取りまたは書き込み 、さらにはSHUTDOWN サーバー。コマンドで使用できるフラグとオプションは多岐にわたるため、GRANTについてよく理解しておくことをお勧めします。 公式ドキュメントを閲覧することで実際に行うことができます。

    データベース固有の権限

    ほとんどの場合、特定のdatabaseに基づいてMySQLユーザーに権限を付与します。 そのアカウントはにアクセスできる必要があります。たとえば、一意のMySQLdatabaseごとに一般的な方法です。 サーバー上で独自のuserを持つ それに関連付けられているため、単一のuser 1つのdatabaseへの認証アクセス権があります 逆もまた同様です。

    GRANT ALLuserへの権限 、そのユーザーが特定のdatabaseを完全に制御できるようにします 、次の構文を使用します:

    mysql> GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'localhost';
    

    そのコマンドで、MySQLに次のように指示しました:

    • GRANT PRIVILEGES タイプALL (したがって、もちろんすべて)。 注:最近のほとんどのMySQLインストールでは、オプションのPRIVILEGESは必要ありません。 キーワード。
    • これらの権限はdatabase_name用です すべてに適用されます .*で示されるそのデータベースのテーブル
    • これらの権限はusernameに割り当てられます そのusername @'localhost'で指定されているように、ローカルで接続されています 。有効なホストを指定するには、'localhost'を置き換えます '%'を使用 。

    データベース全体にすべての特権を与えるのではなく、tolkienを与えたいと思うかもしれません。 ユーザーはデータを読み取る機能のみ(SELECTauthorsから booksの表 データベース。それは次のように簡単に達成できます:

    mysql> GRANT ALL PRIVILEGES ON books.authors  TO 'tolkien'@'localhost';
    
    別のスーパーユーザーの作成

    特に安全ではありませんが、場合によっては、サーバー上のすべてのデータベースに対するすべての権限を持つ別の「スーパーユーザー」を作成することをお勧めします。これは上記と同様に実行できますが、database_nameを置き換えることで実行できます。 ワイルドカードアスタリスク付き:

    mysql> GRANT ALL PRIVILEGES ON *.* TO 'tolkien'@'%';
    

    tolkien デフォルトのrootと同じ権限があります アカウント、注意してください!

    変更を保存する

    ユーザー権限の更新後の最後のステップとして、必ずFLUSH PRIVILEGESを発行して変更を保存してください。 mysqlからのコマンド プロンプト:

    mysql> FLUSH PRIVILEGES;
    Query OK, 0 rows affected (0.01 sec)
    

    1. SalesforceデータのEDI形式への変換

    2. MySQLでコメント機能を最大限に活用する方法

    3. SQLite3をMySQLに移行する簡単な方法は?

    4. SQLiteで現在のドットコマンド設定を表示する方法