No.5262 絵文字の保存に対応した MySQL のテーブル定義のサンプル
`id` int(11) NOT NULL AUTO_INCREMENT,
`body` text CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC;
トップ > メモ一覧 > カテゴリ「環境・設定」の絞り込み結果 : 22件
REVOKE ALL PRIVILEGES ON *.* FROM sns_user@'***.***.***.%'; FLUSH PRIVILEGES;
use mysql; select user, host from user; delete from user where user = 'sns_user' and Host = '***.***.***.%'; select user, host from user;
※必ずMasterDBで実行!
コマンドラインから MySQL に接続する際に、接続するポート番号を指定することができます。
ポート番号を指定する場合には -P オプションを使用します。
mysql -P ポート番号
今まで、前に紹介した方法で、自分で MySQL の RPM をビルドしていたのですが、次の点が不満でした。
ということで、QA もちゃんとされている MySQL の公式 RPM に切替えてみることにしました。
まず、現在の MySQL 5.1 の最新バージョンは 5.1.44 です。MySQL の公式サイトでは RHEL5 用の x86_64 の RPM が用意されています。
RHEL5 x86_64 用の RPM は、次のものをダウンロードすることができます。
次のそれぞれの RPM に、どんなものが含まれているか調査してみました。
MySQL-client-community-5.1.44-1.rhel5.x86_64.rpm
/usr/bin/mysql など、MySQL クライアントようのコマンドが含まれています。MySQL-community-5.1.44-1.rhel5.src.rpm
SRPM です。mysql-5.1.44.rhel5.spec と mysql-5.1.44.tar.gz が含まれています。MySQL-community-debuginfo-5.1.44-1.rhel5.x86_64.rpm
MySQL のデバッグシンボル情報です。MySQL-devel-community-5.1.44-1.rhel5.x86_64.rpm
mysql_config コマンドと MySQL のヘッダーファイルが含まれています。MySQL-embedded-community-5.1.44-1.rhel5.x86_64.rpm
MySQL の組み込む用途に使われる /usr/lib64/mysql/libmysqld.a が含まれています。MySQL-server-community-5.1.44-1.rhel5.x86_64.rpm
mysql の sysinit スクリプト、my.cnf 設定ファイルなど MySQL サーバに必要なプログラムが含まれています。MySQL-shared-community-5.1.44-1.rhel5.x86_64.rpm
/usr/lib64/libmysqlclient.so と libmysqlclient_r.so が含まれています。MySQL-shared-compat-5.1.44-1.rhel5.x86_64.rpm
MySQL-shared-community の複数のバージョンが含まれています。MySQL-test-community-5.1.44-1.rhel5.x86_64.rpm
mysql_client_test コマンドが含まれています。
次に、CentOS で提供されているパッケージ名と MySQL 公式のパッケージ名の対応は、次のとおりになります。さらに詳しい RPM の説明は、MySQL 公式サイトを参照しましょう。
mysql: MySQL-client-community + MySQL-shared-community
mysql-bench: 該当なし
mysql-devel: MySQL-devel-community
mysql-server: MySQL-server-community
mysql-test: MySQL-test-community
MySQL 公式の RPM を使うには、既存の CentOS から提供されているパッケージを上書きするようなダミーパッケージを作成したほうが便利だろうと考えました。なぜなら、既存の MySQL 以外のパッケージで、mysql や mysql-devel のパッケージ依存関係が設定されているときにやっかいだからです。具体的には、このような現象が想定されるからです。
一度ダミーパッケージを作って、公式の RPM もローカルの yum リポジトリに入れてインストールとすると、どうも不思議な感じになってしまいました。具体的には、mysql パッケージをインストールすると、なぜか MySQL-server-community パッケージがインストールされてしまいました。
公式の RPM をよく見てみると、なんと Provides が設定されているじゃありませんか!
公式の RPM では、次のようにちゃんと Provides が設定されています。
MySQL-client: mysql-client MySQL-client
MySQL-server-community: msqlormysql mysql-server mysql MySQL MySQL-server
MySQL-test-community: mysql-test MySQL-test
MySQL-devel-community: mysql-devel MySQL-devel
MySQL-shared-community: mysql-shared MySQL-shared
MySQL-embedded-community: mysql-embedded MySQL-embedded
MySQL-test-community: mysql-test MySQL-test
なので、mysql パッケージ名を指定すると MySQL-server-community パッケージがインストールされるんですね。。。ということで、小文字のパッケージ名でもちゃんとインストールできます。。。ダミーパッケージを作成したの が無駄になってしまいました、お恥ずかしい。。。
一点だけ注意点があって、mysql というパッケージ名は MySQL-server-community で Provides されているので、MySQL サーバが入ってしまうということです。もし、あるパッケージに mysql というパッケージの依存関係があると MySQL-server-community パッケージがインストールされてしまうので注意しましょう。
まとめると、ダミーパッケージは必要なく、MySQL の公式パッケージだけで、次のコマンドで MySQL の最新バージョンを手軽に使うことができます。
$ sudo yum install mysql-client mysql-shared mysql-server
上のコマンドで MySQL をインストールする場合、MySQL の公式 RPM の方がバージョンが新しいので必ず MySQL 5.1.44 がインストールされるはずです。
ですが、正しくバージョンを指定して、MySQL のバージョンをインストールした場合は、次のようにします。
$ sudo yum install mysql-client-5.1.44 mysql-shared-5.1.44 mysql-server-5.1.44
ただし、RPM に登録されるパッケージ名は、MySQL-*** となるので注意しましょう。mysql* という小文字のパッケージでは登録されていないので気をつけてください。
また、mysql の設定ファイル(/etc/my.cnf と /etc/mysqlmanager.passwd)は、インストールされていないので自分で設置しましょう。
デフォルトの /etc/my.cnf は、このあたりの情報をもとにして設定を追加するといいと思います。
ちなみに MySQL の公式 RPM は、cobbler でローカルの yum リポジトリにミラーしていますが、こんな感じで設定してあります。
$ sudo cobbler repo report –name=mysql-MySQL-5.1
repo: mysql-MySQL-5.1
arch: x86_64
breed: rsync
comment:
created: Tue Feb 9 22:34:22 2010
createrepo_flags: -c cache -d
environment: {}
keep updated: True
mirror: rsync://ftp.jaist.ac.jp/pub/mysql/Downloads/MySQL-5.1/
mirror locally: True
modified : Tue Feb 9 22:34:22 2010
owners: ['admin']
priority: 99
rpm list:
yum options: {}
こうしておけば、MySQL 5.1 系の最新バージョンがでたとき、cobbler reposync すればすぐに最新版の RPM をローカルの yum リポジトリにミラーできるので、とても便利です。
さて、これで MySQL をメジャーアップグレードする準備が整いました。