MySQLデータベース権限の詳細

3473 ワード

面接で権限に関する質問をされたが、その時はぼんやりした顔をしていたが、帰ってきてやっと気づいた.ずいぶん前に使ったことがあるが、忘れただけだ.
一、MySQL権限紹介##
ユーザーの使用範囲はレベルによって制限され、MySQLではuser、db、tables_priv、columns_privの4つのテーブルは、権限の制御を実現します.具体的な検証手順は次のとおりです.
  • 基本情報の確認:まずuserテーブルから登録者のHost(IP)、User、Passwordが存在するかどうかを判断し、存在する場合は検証を通過する.
  • 権限割当て:user、db、tables_priv、columns_privはシーケンス検証を行う.現在のレベルに合格した場合、次のレベルの検証は行われません.たとえば、user権限で検証すると、次の3つの検証は行われません.

  • 二、権限付与操作##
    1.CMDでmysqlを起動する:
    net start mysql56;
    

    2.rootでmysqlにログインする:
    mysql -u root -p pwd;
    

    3.ユーザーがいない場合は、まずユーザーを作成します.
    create user xxx IDENTIFIED by 'pwd';(pwd          )
    

    ユーザー情報を変更するには、次の例を参照してください.
         :rename user olduser to newuser;
        :drop user username;( mysql5               , 5       ,    。)
        :set password for username =password('newpwd');
          :updata mysql.user set password =password('newpwd') where user ='username';
    

    4.ユーザー権限の表示
    show grants for username;
    

    5.権限付与
    grant select on db.* to username;
    

    6.回収権限
    revoke select on db.* from username;(        )
    

    一度に複数の権限を付与することができ、権限間に‘,’を付けるだけで、回収も可能である.
    7.権限の即時有効化
    flush privileges;
    

    まとめると、権限を付与する際に与えなければならない情報は次のとおりです.
    1.付与する権限;2.アクセス権が付与されたデータベースまたはテーブル.3.ユーザー名.
    8.grantとrevokeは、いくつかの階層でアクセス権を制御できます.
    1.     :grant all /revoke all
    2.     :on database.*
    3.    :on database.table
    4.    :grant select(id, se, rank) on testdb.apache_log to dba@localhost;
    5.       :grant execute on procedure testdb.pr_add to ’dba’@’localhost’
    6.     :grant execute on function testdb.fn_add to ’dba’@’localhost’
    

    9.userテーブルのhostカラム値の意味
    1.%:すべてのホストに一致する2.localhost:localhostはIPとして解析されず、UNIXsocketリンク3.127.0.1:TCP/IPリンクを介し、ネイティブのみアクセスできます.4.::1::1はipv 6を互換的にサポートするもので、ipv 4との127.0.0.1を示す
    その他のアクセス権の詳細:次の表:
    mysqlデータベースレベル
    表層
    三、MySQLセキュリティ構成方案##
    1 mysqlポートへのアクセスを制限するip
    Windowsはwindowsファイアウォールまたはipsecで制限でき、linuxではiptablesで制限できます.
    2 mysqlのポートを変更する
    Windowsの下でプロファイルmyを変更できます.iniは実装され、linuxはプロファイルmyを変更することができる.cnfが実現する.
    3すべてのユーザーに強いパスワードを設定し、対応するアカウントのアクセスipを厳格に指定する
    mysqlでuserテーブルでユーザーのアクセス可能ipを指定できます
    4 root特権アカウントの処理
    rootアカウントに強いパスワードを設定し、ローカルログインのみを許可することを指定することをお勧めします.
    5ログの処理
    必要に応じてクエリー・ログを開くと、クエリー・ログにログインおよびクエリー・ステートメントが記録されます.
    6 mysqlプロセス実行アカウント
    Windowsではlocal systemを使用してmysqlアカウントを実行することは禁止されています.network serviceを使用するか、自分でアカウントを新規作成することも考えられますが、mysqlプログラムが存在するディレクトリの読み取り権限とdataディレクトリの読み取りと書き込み権限を与えなければなりません.linuxでmysqlアカウントを新規作成し、インストール時にmysqlをmysqlアカウントで実行するように指定し、プログラムが存在するディレクトリの読み取り権限、dataが存在するディレクトリの読み取りと書き込み権限を与えます.
    7 mysqlアカウントを実行するディスク権限
    1)mysqlアカウントの実行には,プログラムが存在するディレクトリの読み取り権限,dataディレクトリの読み取りと書き込み権限が必要である2)他のディレクトリの書き込みと実行権限,特にウェブサイトがあることは許されない.3)mysql実行アカウントのcmd,shなど一部のプログラムに対する実行権限を取り消す.
    8サイトで使用するmysqlアカウントの処理
    使用するデータベースにアカウントのすべての権限を付与するアカウントを新規作成します.これにより、対応するデータベースに対するウェブサイトのすべての操作を保証するとともに、アカウントが権限が高すぎるためにセキュリティに影響を与えないことを保証することができます.単一データベースのすべての権限を与えるアカウントはsuper,process,fileなどの管理権限を持たない.もちろん、私のサイトにどのような権限が必要なのか、それとも多くの権限が必要なのかを明確に知ることができます.多くの場合、パブリッシャーはサイトにどのような権限が必要なのか分からないので、上記の構成をお勧めします.また、私が指している共通のものは、具体的には数台の機械しかないので、多くない場合は、個人的に必要な権限を与えることをお勧めします.具体的には、上の表のアドバイスを参考にすることができます.
    9不要なデータベースの削除
    testデータベースは新しいアカウントに対してデフォルトで権限を持っています原文リンク:1.mysqlユーザー管理と権限設定2.MySQLの権限の詳細解読