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 ALLへ userへの権限 、そのユーザーが特定のdatabaseを完全に制御できるようにします 、次の構文を使用します:
mysql> GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'localhost';
そのコマンドで、MySQLに次のように指示しました:
-
GRANTPRIVILEGESタイプALL(したがって、もちろんすべて)。 注:最近のほとんどのMySQLインストールでは、オプションのPRIVILEGESは必要ありません。 キーワード。 - これらの権限は
database_name用です すべてに適用されます.*で示されるそのデータベースのテーブル - これらの権限は
usernameに割り当てられます そのusername@'localhost'で指定されているように、ローカルで接続されています 。有効なホストを指定するには、'localhost'を置き換えます'%'を使用 。
データベース全体にすべての特権を与えるのではなく、tolkienを与えたいと思うかもしれません。 ユーザーはデータを読み取る機能のみ(SELECT )authorsから 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)