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

MySQLで新しいユーザーを作成して権限を付与する方法

    MySQL は、データを保存および整理し、ユーザーがデータを取得できるようにする、広く使用されているデータベース管理システムです。これには、ユーザーにテーブルとデータベースへの特定のアクセス許可を付与するさまざまなオプションが付属しています。

    このガイドでは、 MySQLで新しいユーザーを作成して権限を付与する方法を学習します データベース。

    MySQLで新しいユーザーを作成する方法

    新しいユーザーを作成するには、最初にMySQLシェルにログインします。

    $ sudo mysql -u root -p
    

    sudoパスワードに続けて、MySQLデータベースのセットアップ時に提供されたパスワードを入力し、 ENTERを押します。 。その後、このプロンプトが表示されます。

    新しいユーザーを作成するには、次の構文を使用します。

    MariaDB [none]> CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';
    

    たとえば、「 tecmint」という名前の新しいユーザーを作成するには データベース内で、次のコマンドを呼び出します。

    MariaDB [none]> CREATE USER 'tecmint'@'localhost' IDENTIFIED BY 'QkYKmw$5tec';
    

    覚えておくべきいくつかのポイント

    ローカルに、つまり MySQLをインストールしたシステムにユーザーを追加する場合 、ユーザーのホストは localhostとして指定されています 、IPアドレスではありません。キーワード「localhost ‘は‘このコンピュータに変換されます ‘とMySQLはそれを一意に扱います。基本的に、localhostは、ローカルにインストールされたMySQLデータベースサーバーへの接続を確立するためにmysqlクライアントによって使用されます。

    これまでのところ、テクミント ユーザーには、データベースと対話するための権限がありません。実際のところ、ユーザーはMySQLシェルにアクセスすることさえできません。

    テーブルを含むすべてのデータベースへのフルアクセスをユーザーに許可するには、を実行します。

    MariaDB [none]> GRANT ALL PRIVILEGES ON * . * TO 'tecmint'@'localhost';
    

    上記のコマンドで、アスタリスクは、ユーザーがアクセスできるデータベースとテーブルをそれぞれ指します。データベースに対するすべての権限をユーザーに付与します–読み取り書き込み編集、 および実行 他のデータベースやテーブル全体ですべてのタスクを実行することも含まれます。

    これまでのところ、ユーザーにデータベースへのフルアクセスを許可しています。これはMySQLの概念を説明するのに便利ですが、データベースにセキュリティリスクをもたらす可能性があるため、通常はお勧めしません。ハッカーがユーザーのパスワードを入手した場合にどうなるか考えてみてください。次のセクションでは、さらに進んで特定の権限を割り当てる方法について説明します。

    ユーザーへの権限の割り当てが完了したら、変更を有効にするために示されているようにすべての権限を再読み込みします。

    MariaDB [none]> FLUSH PRIVILEGES
    

    さまざまなユーザー権限を付与する方法

    ユーザーに付与できる可能性のある権限の内訳は次のとおりです。

    • すべての特権 –前に見たように、これにより、MySQLユーザーに特定のデータベースへのフルアクセスが許可されます。
    • 作成 –ユーザーが新しいデータベースまたはテーブルを作成できるようにします。
    • ドロップ –ユーザーがデータベースまたはユーザーを削除できるようにします。
    • 挿入 –ユーザーがテーブルに行を挿入できるようにします。
    • 削除 –ユーザーがテーブルから行を削除できるようにします。
    • 選択 –「SELECT」権限があれば、ユーザーはテーブルの内容を読み取ることができます。
    • 更新 –ユーザーがテーブルの行を更新できるようにします。
    • 付与オプション –ユーザーは、他のユーザーの特権を付与または削除できます。

    特定のユーザー権限を付与するには、次の構文を使用します:

    MariaDB [none]> GRANT permission_type ON database_name.table_name TO 'username'@'localhost';
    

    さらに、次のように、単一のアスタリスク記号を使用して、データベース内のすべてのテーブルにアクセス許可を割り当てることができます。

    MariaDB [none]> GRANT permission_type ON database_name.* TO 'username'@'localhost';
    

    たとえば、 SELECTを割り当てるには 「テクミント」へのアクセス許可 ‘データベースのすべてのテーブルのユーザー testdb 、コマンドを実行します。

    MariaDB [none]> GRANT SELECT ON testdb.* TO 'tecmint'@'localhost';
    

    次に、変更を有効にするための特権をフラッシュします。

    MariaDB [none]> FLUSH PRIVILEGES;
    

    さらに、図のようにコンマで区切ることにより、一度に複数の権限を割り当てることができます。

    MariaDB [none]> GRANT INSERT, UPDATE ON testdb.* TO 'tecmint'@'localhost';
    

    MySQL権限を取り消す方法

    ユーザーから権限を取り消すには、次の構文を使用します:

    MariaDB [none]> REVOKE permission_type ON database_name.table_name FROM 'username'@'localhost';
    

    たとえば、 INSERTを取り消すには ユーザー「tecmint」からの権限 ’、コマンドを実行します。

    MariaDB [none]> REVOKE INSERT ON testdb.* FROM tecmint'@'localhost';
    MariaDB [none]> FLUSH PRIVILEGES
    

    ユーザーの現在の権限を確認するには、次を実行します。

    MariaDB [none]> SHOW GRANTS FOR 'username'@'localhost';
    

    以下の出力から、 INSERTであることがわかります。 「テクミント」から許可が抹消されました ’ユーザーが SELECTのみを残す および更新 testdbの権利 データベース。

    新しいユーザーを使用してMySQLシェルへのログインをテストするには、最初にログアウトします。

    MariaDB [none]> quit;
    

    その後、再度ログインします。

    $ sudo mysql -u tecmint -p
    

    ユーザーのパスワードを入力し、 ENTERを押します シェルにアクセスします。

    ユーザーを削除するには、 DROPを使用します データベースを削除するときと同じように、コマンドを実行します。

    MariaDB [none]> DROP USER 'username'@'localhost';
    

    次のMySQL関連の記事も読むことをお勧めします:

    • MySQLの一般的なエラーをトラブルシューティングするための便利なヒント
    • Mytop –LinuxでMySQL/MariaDBのパフォーマンスを監視するための便利なツール
    • LinuxでデフォルトのMySQL/MariaDBポートを変更する方法
    • LinuxでMySQLまたはMariaDBのルートパスワードをリセットする方法
    結論

    うまくいけば、これで、MySQLデータベースサーバーにユーザーを作成し、アクセス許可を快適に割り当てたり取り消したりできるようになります。


    1. SQL INSERT構文–DBMSによってリストされます

    2. 複数のINSERTステートメントと複数の値を持つ単一のINSERT

    3. PHP PDO(FreeTDS)でのみ最初の255文字を返すMSSQLServerでのODBCクエリ

    4. oracle plsql:XMLを解析して表に挿入する方法