web-dev-qa-db-ja.com

g + wパーミッション750または640を介してmysqlファイルへの読み取り専用アクセスを取得するにはどうすればよいですか?

data-dir自体には権限700があり、それによってmysqlユーザーへのアクセスが制限されます。

mysqlグループに追加した他の人がbinlogsを読み取って、*.frm*.MYI*.MYDファイルをダウンロードできるようにしたいと思います。ローカルコンピュータ。

私の最初の考えは、chmod g+rx data-dirを実行することです。

data-dir内のデータベースディレクトリとテーブル/ binlogファイルには、770/660の権限があります。したがって、偶発的な改ざんやライブデータの削除を防ぐために、これらすべてをchmod g-wする必要があります。

残念ながら、新しいbinlogsが作成され、create databaseまたはcreate tableコマンドが使用されると、g+w権限が自動的に追加されます。この機能を変更するにはどうすればよいですか?

1
Bryan Field

さて、私はオンラインで、コマンドUMASKが何を出力するかに関係なく、環境変数umaskUMASK_DIRを設定する必要があることを発見しました。

export UMASK=0640を呼び出す直前に、起動スクリプトの先頭にexport UMASK=0750mysqld_safeを追加する必要があります。

8進番号付けシステムに切り替えるには、先行ゼロが重要です。

私が最初に試したのは0027でしたが、それによってu=rw,g=w,o=rwxのアクセス許可を持つファイルが生成されたため、環境変数のアクセス許可を0750(および0640)に反転するように促されました。 )目的の結果を生成します。

私の自己回答が将来の訪問者に役立つことを願っています。 :-)

1
Bryan Field

あなたが解決しようとしている根本的な問題は何ですか? UMASKは間違ったアプローチである可能性があります。

ファイルとディレクトリはmysql "user"から完全にアクセス可能である必要があるため、ディレクトリには少なくとも0700が必要であり、ファイルには0600が必要です。

「世界」がそれらを読み取ることができるようにしたい場合(ただし、それらを書き込むことはできない)、0755および0644。しかし、なぜそれが必要なのですか?また、OSによって下位ビットがオフにならないようにするには、おそらくUMASK_DIR=0755UMASK=644が必要です。

MySQLにはアクセス制御があります内部 MySQL。これは、MySQLのGRANTコマンドを介して行われます。また、MySQLの「ユーザー」はOSの「ユーザー」と同じではありません。特に、OSの「ルート」とMySQLの「ルート」は独立しています。

0
Rick James