Saminnet-Search Article Wiki Forum Piwigo SNS Cloud vtiger Sugar
Mysql ユーザ

Mysql ユーザ

ユーザの作成

以下のコマンドでsampleユーザ(localhostからのみ接続許可)を作成して、sampleデータベースに対してのみALL権限を与えることができる。

mysql> GRANT ALL ON sample.* TO sample@localhost IDENTIFIED BY "pass";
Query OK, 0 rows affected (0.01 sec)
  • ALL権限で、WITH GRANT OPTION以外の全ての権限を付与
  • 権限の設定先はsample.*でデータベースレベルの権限をsampleデータベースに対して設定している
sample.*を*.*にするとグローバルレベルにALL権限が設定され、sampleユーザは全データベースに対してALL権限を持つことになる。


MySQLの権限に関する詳細:http://dev.mysql.com/doc/refman/4.1/ja/grant.html

動作

実際に、sampleユーザでMySQLに接続してみると、、、

$ mysql -u sample -p  <-- 作成したsampleユーザで接続
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 9 to server version: 4.1.22

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> show databases;
+----------+
| Database |
+----------+
| test     |
+----------+
1 row in set (0.00 sec)
他のデータベースは閲覧できない

test*を除く他のデータベースは閲覧できない。

また、sampleデータベースを作成して、テーブル作成等を行えるが他の操作はできないようになっている。

mysql> create database sample;
Query OK, 1 row affected (0.00 sec)

mysql> CREATE TABLE account (id SERIAL, name VARCHAR(20) NOT NULL);
Query OK, 0 rows affected (0.06 sec)

sampleデータベースは作成してテーブルの作成等を行える

mysql> create database sample2;
ERROR 1044 (42000): Access denied for user 'sample'@'localhost' to database 'sample2'

他のデータベースは操作不可

 

権限の設定状況

上記のGRANTにより実際にどのように権限が設定されたか見てみる。

まずsampleユーザのグローバルレベルには権限が一切付与されていない。

mysql> use mysql;
Database changed
mysql> select * from user \G  グローバルレベルの権限はmysql.userテーブルに格納されている
<略>
*************************** 5. row ***************************
                 Host: localhost
                 User: sample
             Password: 29bad1457ee5e49e
          Select_priv: N
          Insert_priv: N
          Update_priv: N
          Delete_priv: N
          Create_priv: N
            Drop_priv: N
          Reload_priv: N
        Shutdown_priv: N
         Process_priv: N
            File_priv: N
           Grant_priv: N
      References_priv: N
           Index_priv: N
           Alter_priv: N
         Show_db_priv: N
           Super_priv: N
Create_tmp_table_priv: N
     Lock_tables_priv: N
         Execute_priv: N
      Repl_slave_priv: N
     Repl_client_priv: N
             ssl_type:
           ssl_cipher:
          x509_issuer:
         x509_subject:
        max_questions: 0
          max_updates: 0
      max_connections: 0
5 rows in set (0.01 sec)


データベースレベル権限には、GRANTで指定したALL権限がsampleデータベースに対して付与されている。

mysql> select * from db \G  データベースレベル権限はmysql.dbテーブルに格納されている。
<略>
*************************** 3. row ***************************
                 Host: localhost  <-- 対象ユーザの接続元ホスト
                   Db: sample     <-- 対象DB名
                 User: sample     <-- 対象ユーザ
          Select_priv: Y
          Insert_priv: Y
          Update_priv: Y
          Delete_priv: Y
          Create_priv: Y
            Drop_priv: Y
           Grant_priv: N <-- Grant 以外が付与されている
      References_priv: Y
           Index_priv: Y
           Alter_priv: Y
Create_tmp_table_priv: Y
     Lock_tables_priv: Y
3 rows in set (0.01 sec)

上記のように、グローバルレベルには権限を付与せず、指定データベースへのデータベースレベル権限のみ付与することで、特定データベースへのみアクセス可能になる。

Comments   

 
0 #1 Guest 2019-04-15 04:25
Hello are using Wordpress for your blog platform? I'm new to the blog world but I'm trying
to get started and set up my own. Do you require any coding knowledge to make your own blog?
Any help would be really appreciated!

My website :: 860 DSPi
Quote
 

Category Database

TweetTweet Share on LinkedInShare on LinkedIn Share on Google+Google+ Submit to RedditReddit Publish on WordPress WordPress Send emailSend email