カテゴリー: MySQL
前回の続き。
友人がこのブログが止まっていると教えてくれました。
/etc/hosts.allowでmysqlへのアクセス制限をしたつもりだったけど、また中国方面からしつこくアクセスが始まって何故かmysqlが反応しなくなったようです。どうもこの辺の挙動がよく分からんです。
そこで、どうせMySQLは自サーバー上でしか使わないのでネットワーク越しに反応をしないように起動オプションに下記を追加しました。
--skip-networking
これで3306ポートは外部に露出しなくなります。
本当は、ipfwとか使ってパケットをフィルターしていまえばいいんだけど、下手に設定を間違えると外部からアクセス不能になってしまうのでまだ やってないんです。 以前にNATをリモートで設定しようとしたらインストール直後のデフォルトルールがdeny allでいきなりアクセス不能になってしまった痛い経験がトラウマになってます。
Sep 1 18:58:30 ns mysqld[3641]: twist 220.162.59.165 to /bin/echo "You are not welcome to use mysqld from 220.162.59.165."
先月末にmysql-server-5.1.20から5.1.21に上げてからだと思うんですが、こんなログがauth.logに残るようになりま した。 そして、この中国方面からのアクセスが来るとブログが止まります。このエラーメッセージってどこが出しているのかな~っと思って調べてみると、 /etc/hosts.allowにありました。
# The rest of the daemons are protected. ALL : ALL : severity auth.info : twist /bin/echo "You are not welcome to use %d from %h."
inetd.confにmysqldは設定していないけどsshd同様にhosts.allowを参照しているみたいです。 つーことは、ここでアクセス制限をすればいいってことだと気付き早速以下の設定をhosts.allowに追記。
mysqld : localhost : allow mysqld : ALL : deny
これで中国方面からのアクセスは来なくなりました。でも、何故このアクセスでmysqldが変になったのかは不明。誰か知っている人いたら教えて下さい。
phpMyAdminを使っていて「PMA Database … OK ではありません。」というエラーが出る。調べてみるとここが一番分かりやすかった。mysql5.1でそのままOKでした。感謝。
以下、そのままメモとしてコピペしてます。
phpMyAdminで’phpmyadmin’という名のDBを作成。そのDBに対して以下のSQL文を実行。
CREATE TABLE `pma_bookmark` ( `id` int(11) NOT NULL auto_increment, `dbase` varchar(255) NOT NULL default ‘’, `user` varchar(255) NOT NULL default ‘’, `label` varchar(255) NOT NULL default ‘’, `query` text NOT NULL, PRIMARY KEY (`id`) ) TYPE=MyISAM COMMENT=’Bookmarks’; CREATE TABLE `pma_column_info` ( `id` int(5) unsigned NOT NULL auto_increment, `db_name` varchar(64) NOT NULL default ‘’, `table_name` varchar(64) NOT NULL default ‘’, `column_name` varchar(64) NOT NULL default ‘’, `comment` varchar(255) NOT NULL default ‘’, `mimetype` varchar(255) NOT NULL default ‘’, `transformation` varchar(255) NOT NULL default ‘’, `transformation_options` varchar(255) NOT NULL default ‘’, PRIMARY KEY (`id`), UNIQUE KEY `db_name` (`db_name`,`table_name`,`column_name`) ) TYPE=MyISAM COMMENT=’Column information for phpMyAdmin’; CREATE TABLE `pma_history` ( `id` bigint(20) unsigned NOT NULL auto_increment, `username` varchar(64) NOT NULL default ‘’, `db` varchar(64) NOT NULL default ‘’, `table` varchar(64) NOT NULL default ‘’, `timevalue` timestamp(14) NOT NULL, `sqlquery` text NOT NULL, PRIMARY KEY (`id`), KEY `username` (`username`,`db`,`table`,`timevalue`) ) TYPE=MyISAM COMMENT=’SQL history for phpMyAdmin’; CREATE TABLE `pma_pdf_pages` ( `db_name` varchar(64) NOT NULL default ‘’, `page_nr` int(10) unsigned NOT NULL auto_increment, `page_descr` varchar(50) NOT NULL default ‘’, PRIMARY KEY (`page_nr`), KEY `db_name` (`db_name`) ) TYPE=MyISAM COMMENT=’PDF relation pages for phpMyAdmin’; CREATE TABLE `pma_relation` ( `master_db` varchar(64) NOT NULL default ‘’, `master_table` varchar(64) NOT NULL default ‘’, `master_field` varchar(64) NOT NULL default ‘’, `foreign_db` varchar(64) NOT NULL default ‘’, `foreign_table` varchar(64) NOT NULL default ‘’, `foreign_field` varchar(64) NOT NULL default ‘’, PRIMARY KEY (`master_db`,`master_table`,`master_field`), KEY `foreign_field` (`foreign_db`,`foreign_table`) ) TYPE=MyISAM COMMENT=’Relation table‘; CREATE TABLE `pma_table_coords` ( `db_name` varchar(64) NOT NULL default ‘’, `table_name` varchar(64) NOT NULL default ‘’, `pdf_page_number` int(11) NOT NULL default ‘0′, `x` float unsigned NOT NULL default ‘0′, `y` float unsigned NOT NULL default ‘0′, PRIMARY KEY (`db_name`,`table_name`,`pdf_page_number`) ) TYPE=MyISAM COMMENT=’Table coordinates for phpMyAdmin PDF output’; CREATE TABLE `pma_table_info` ( `db_name` varchar(64) NOT NULL default ‘’, `table_name` varchar(64) NOT NULL default ‘’, `display_field` varchar(64) NOT NULL default ‘’, PRIMARY KEY (`db_name`,`table_name`) ) TYPE=MyISAM COMMENT=’Table information for phpMyAdmin’;
その後、 /usr/local/www/phpMyAdmin/config.inc.php を下記のように編集。
$cfg[‘Servers’][$i][‘pmadb’] = ‘phpmyadmin’; // Database used for Relation, Bookmark and PDF Features // (see scripts/create_tables.sql) // - leave blank for no support // DEFAULT: ‘phpmyadmin’ $cfg[‘Servers’][$i][‘bookmarktable‘] = ‘pma_bookmark’; // Bookmark table // - leave blank for no bookmark support // DEFAULT: ‘pma_bookmark’ $cfg[‘Servers’][$i][‘relation’] = ‘pma_relation’; // table to describe the relation between links (see doc) // - leave blank for no relation-links support // DEFAULT: ‘pma_relation’ $cfg[‘Servers’][$i][‘table_info’] = ‘pma_table_info’; // table to describe the display fields // - leave blank for no display fields support // DEFAULT: ‘pma_table_info’ $cfg[‘Servers’][$i][‘table_coords’] = ‘pma_table_coords’; // table to describe the tables position for the PDF schema // - leave blank for no PDF schema support // DEFAULT: ‘pma_table_coords’ $cfg[‘Servers’][$i][‘pdf_pages’] = ‘pma_pdf_pages’; // table to describe pages of relationpdf // - leave blank if you don’t want to use this // DEFAULT: ‘pma_pdf_pages’ $cfg[‘Servers’][$i][‘column_info’] = ‘pma_column_info’; // table to store column information // - leave blank for no column comments/mime types // DEFAULT: ‘pma_column_info’ $cfg[‘Servers’][$i][‘history’] = ‘pma_history’; // table to store SQL history // - leave blank for no SQL query history // DEFAULT: ‘pma_history’
/usr/ports/databases/mysql51-server
/usr/local/etc/pkgtools.conf
‘databases/mysql51-*’ => [ ‘WITH_XCHARSET=all’, ],
↑ 紆余曲折の末、とりあえずこれで済ませました。
# portinstall database/mysql51-server # cd /usr/local/bin # ./mysql_install_db # cd /var/db # chown -R mysql:mysql mysql
/etc/rc.conf に mysql_enable=”YES” を追記。
デフォルトのDBディレクトリは /var/db/mysql になるので、別の場所にしたければ、 /etc/rc.conf にmysql_dbdir = “ほげほげ” をさらに追記すればいい。