web-dev-qa-db-ja.com

CentOS-PerconaMySQL- / etc / my.cnfを読み取っていません

CentOS6.1サーバーでPercona5.5をコンパイルしましたが、正常に起動しますが、/ etc /my.cnfファイルを読み取っていないようです。

# In /etc/my.cnf
character_set_server = utf8
collation_server     = utf8_general_ci

mysql> show variables like 'character_set_server';
+----------------------+--------+
| Variable_name        | Value  |
+----------------------+--------+
| character_set_server | latin1 |
+----------------------+--------+
1 row in set (0.00 sec)

ここでは、latin1ではなく 'utf8'の値が表示されることを期待しています。

現在、シンボリックリンクとして設定されている/etc/my.cnfは、現在バージョン管理されているmy.cnfファイルを指しているため、次のようになります。

root@Host ~/MyFile/Setup # -> ls /etc/my.cnf
lrwxrwxrwx. 1 root root 64 Dec 17 19:05 /etc/my.cnf -> /home/src/config/current/sys/etc/mysql/prod/confs-enabled/my.cnf

最初のグーグルで、--defaults-file=/etc/my.cnf、フラグを使用してmy.cnfファイルのパスを具体的に設定する必要があるようです。これは現在、CentOSデーモンスクリプトを介して設定されていません。

ps auxfw > tmp.txt
vi tmp.txt
root     11798  0.0  0.1 106044  1488 pts/0    S    19:09   0:00 /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql --pid-file=/var/lib/mysql/Host.localdomain.pid
mysql    11875  0.1  4.3 499560 43936 pts/0    Sl   19:09   0:00  \_ /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --user=mysql --log-error=/var/lib/mysql/Host.localdomain.err --pid-file=/var/lib/mysql/Host.localdomain.pid

だから私の質問は、--defaults-file=/etc/my.cnfフラグを/etc/init.d/mysqlデーモンスクリプトに渡す機能を追加するにはどうすればよいですか?

ありがとう。

--[〜#〜] update [〜#〜]-

問題は、selinuxポリシーを強制に設定し、my.cnfをシンボリックリンクしようとしているためと思われます。次のことを考慮してください。

lrwxrwxrwx. 1 root root 72 Feb  7 05:02 my.cnf -> /home/src/config/current/sys/etc/mysql/prod/confs-available/my-large.cnf

そして、/ home/srcパーマは次のようになります。

drwxrwxr-x. src  src  unconfined_u:object_r:user_home_t:s0 config

同じ正確なファイルを/ etcにコピーすると機能し、selinuxを無効にすると機能します。したがって、mysqlが/ home/srcにアクセスしようとしているという事実と関係があります。

また、私はaudit2whyを実行し、次のように応答しました。

Feb  8 17:32:20 app-mldrinks-aa-1 kernel: type=1400 audit(1328722340.203:17): avc:  denied  { read } for  pid=2109 comm="mysqld" name="xvda" dev=devtmpfs ino=5801 scontext=unconfined_u:system_r:mysqld_t:s0 tcontext=system_u:object_r:fixed_disk_device_t:s0 tclass=blk_file

Was caused by:
    Missing type enforcement (TE) allow rule.

    You can use audit2allow to generate a loadable module to allow this access.

カスタムselinuxモジュールを作成せずにこれを機能させる方法はありますか? /home/src/config/currentのコンテキストタイプをmysqld_db_tに変更できません。これは、構成の変更をプッシュするたびに、user_home_tで新しいディレクトリが作成され、最新の変更が含まれるためです。

1
Mike Purcell

My.cnfをバージョン管理パスから/etc/my.cnfにコピーするだけで、すべてが正常に機能します。もっと時間を落とし、mysqldが/ home/src/configにアクセスできるようにselinuxを設定できるようになるまでこれを続けます。

0
Mike Purcell

たぶん、あなたはそれを他の方法で得ることができます-どのmy.cnfがperconaが読み込もうとしているのかを見つけてみてください。

すなわち。 mysqld --help --verbose | head -n 30そして次のようなものを探します

Default options are read from the following files in the given order:
/etc/mysql/my.cnf ~/.my.cnf
1
Fox