MySQL8.0 はユーザーを作成し、ユーザー権限を構成し、エクストラネット アクセスを追加します
ユーザーの追加、エクストラネット アクセス
MySQL 8.0 では、root ユーザーの外部ネットワークへのアクセスはデフォルトで禁止されています。root ユーザーの外部ネットワーク アクセス権を変更するには、次の手順を実行する必要があります。
-
MySQLサーバーに接続します。MySQL コマンド ライン クライアントまたは他のデータベース管理ツールを使用できます。
-
次のコマンドを使用して、root として MySQL にログインします。
sudo mysql -u root -p
次に、root ユーザーのパスワードを入力します。
- 次のコマンドを入力して、root ユーザーの外部ネットワーク アクセス許可を変更します。
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '您的密码';
CREATE USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '您的密码';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
'您的密码'
設定したいrootユーザーのパスワードに置き換えてください。
-
リモート アクセスを許可するには、MySQL 構成ファイルを編集する必要があります。MySQL 構成ファイル (通常は
/etc/mysql/mysql.conf.d/mysqld.cnf
または/etc/mysql/my.cnf
) を見つけて開きます。 -
構成ファイル内の行を見つけて
bind-address
コメントするか、次のように変更します。
# bind-address = 127.0.0.1
これにより、MySQL はすべての IP アドレスからの接続を受け入れることができます。
-
構成ファイルを保存して閉じます。
-
変更を有効にするには、MySQL サービスを再起動します。オペレーティング システムに適したコマンドを使用します。
sudo service mysql restart
また
sudo systemctl restart mysql
これで、root ユーザーが外部ネットワークにアクセスできるようになります。root ユーザーにリモート アクセスを許可すると、セキュリティ上の理由から危険が伴う可能性があることに注意してください。セキュリティ上の理由から、より厳格なアクセス権を持つユーザーを使用し、リモート アクセスを必要な IP アドレスのみに制限することをお勧めします。
ユーザーの DDL および DML 権限を変更する
MySQL 8.0 で DDL (データ定義言語) および DML (データ操作言語) 権限を変更するには、次の手順に従います。
ステップ 1: root ユーザーで MySQL にログインする
コマンド ライン ターミナルで、MySQL サーバーに root ユーザーとしてログインします。次のコマンドを実行します。
mysql -u root -p
root ユーザーのパスワードを入力し、Enter キーを押して MySQL にログインします。
ステップ 2: 現在のユーザー権限を表示する
現在のユーザーの権限を表示するには、次のコマンドを使用できます。
SHOW GRANTS FOR '<your_username>';
<your_username>
権限を変更するユーザー名に置き換えます。
ステップ 3: DDL 権限を変更する
a. 既存のユーザーの DDL 権限を変更します。
前のステップで、現在のユーザーの権限情報が表示されていることがわかります。GRANT ALTER, CREATE, DROP, INDEX, …
で始まる権限ステートメントを検索します。これらの権限により、ユーザーは DDL 操作を実行できます。特定の DDL 権限を取り消したい場合は、次のコマンド例を使用できます。
REVOKE DROP ON your_database_name.* FROM '<your_username>';
your_database_name
権限を変更するデータベースの名前と、<your_username>
権限を変更するユーザー名に置き換えます。
b. 新しく作成したユーザーの DDL 権限を変更します。
新しく作成したユーザーにデフォルトの DDL 権限を設定する場合は、次のコマンドを使用できます。
CREATE USER 'your_username'@'localhost';
GRANT CREATE, ALTER, DROP, INDEX, … ON your_database_name.* TO 'your_username'@'localhost';
your_username
と を適切な値に置き換えyour_database_name
、必要に応じて他の DDL 権限を追加します。
ステップ 4: DML 権限を変更する
DML 権限を変更するには、手順 3 の例に従い、DDL を DML に置き換えます。たとえば、INSERT 権限を付与または取り消したい場合は、次のコマンドを使用できます。
INSERT 権限を付与します。
GRANT INSERT ON your_database_name.* TO 'your_username'@'localhost';
INSERT 権限を取り消します。
REVOKE INSERT ON your_database_name.* FROM 'your_username'@'localhost';
必要に応じて、ステートメント内のデータベース、ユーザー名、権限を調整します。
ステップ 5: 権限を更新する
権限の変更が完了したら、変更を有効にするために MySQL 権限キャッシュを更新する必要があります。次のコマンドを使用します。
FLUSH PRIVILEGES;
これにより、アクセス許可が更新され、変更されたアクセス許可がすぐに有効になります。
ステップ 6: MySQL を終了する
すべての権限の変更が完了したら、次のコマンドを使用して MySQL を終了できます。
EXIT;
これにより、MySQL コマンド ライン ターミナルが終了します。
上記の手順に従って、MySQL 8.0 で DDL および DML 権限を変更できます。権限を変更すると、データベースのセキュリティとデータの整合性に影響を与える可能性があるため、慎重に操作してください。
DDL、DML 権限リスト
以下は、MySQL の一般的な DDL および DML 権限のリストです。
DDL 権限 (データ定義言語):
- CREATE: 新しいデータベース、テーブル、ビュー、関数、ストアド プロシージャなどを作成します。
- ALTER:テーブルの構造の変更(列の追加・削除)、列の属性の変更など、データベースの構造を変更します。
- DROP: データベース、テーブル、ビュー、関数、ストアド プロシージャなどを削除します。
- INDEX: インデックスを作成、変更、または削除します。
- TRIGGER: トリガーを作成、変更、または削除します。
- ビュー: ビューを作成、変更、または削除します。
- SHOW VIEW: ビューの定義情報を表示します。
- GRANT OPTION: 他のユーザーに権限を付与します。
DML 権限 (データ操作言語):
- SELECT: テーブルからデータを取得します。
- INSERT: テーブルに新しい行を挿入します。
- UPDATE: テーブル内の既存の行を更新します。
- DELETE: テーブルからデータを削除します。
- EXECUTE: ストアド プロシージャまたはストアド関数を実行します。
これらのアクセス許可は、特定のユーザーまたはユーザーのグループに個別に付与または取り消しできます。実際の使用では、DDL および DML 権限は特定のニーズに応じてさらに細分化できることに注意してください。