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
で新しいディレクトリが作成され、最新の変更が含まれるためです。
My.cnfをバージョン管理パスから/etc/my.cnfにコピーするだけで、すべてが正常に機能します。もっと時間を落とし、mysqldが/ home/src/configにアクセスできるようにselinuxを設定できるようになるまでこれを続けます。
たぶん、あなたはそれを他の方法で得ることができます-どの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