MySQLインストール(Sourceからインストール) †ユーザ作成 †# groupadd mysql # useradd -g mysql mysql # getent group mysql インストール †# cd /usr/local/src # wget http://dev.mysql.com/get/Downloads/MySQL-4.1/mysql-4.1.22.tar.gz/from/http://mirror.mysql-partners-jp.biz/ # tar zxvf mysql-4.1.22 # chown mysql:mysql /usr/local/src/mysql-4.1.22 # mkdir /usr/local/mysql # chown -R mysql:mysql /usr/local/mysql # cd mysql-4.1.22 # ./configure --prefix=/usr/local/mysql --with-charset=sjis --with-extra-charsets=all --with-mysqld-user=mysql --with-innodb # make # make install DB初期化 †# /usr/local/mysql/bin/mysql_install_db --user=mysql パスを追加 †# vi /etc/profile export PATH=$PATH:/usr/local/mysql/bin 設定 †# cp /usr/local/mysql/share/mysql/my-medium.cnf /etc/my.cnf 自動起動 †# cp /usr/local/mysql/share/mysql/mysql.server /etc/rc.d/init.d/ # cp /usr/local/mysql/share/mysql/mysql.server /etc/rc.d/init.d/mysql # chmod 755 mysql 起動 †# ./mysql start # /usr/local/mysql/bin/mysqld_safe --user=mysql & # /etc/init.d/mysql start 起動確認 †# ps -auxw | grep mysql MySQLインストール(RPMからインストール) †Red Hat Linux であれば Linux x86 RPM downloads から取得します。 # wget http://download.softagency.net/MySQL/Downloads/MySQL-4.1/MySQL-client-4.1.22-0.i386.rpm # wget http://download.softagency.net/MySQL/Downloads/MySQL-4.1/MySQL-server-4.1.22-0.i386.rpm # rpm -ihv MySQL-server-4.1.22-0.i386.rpm # rpm -ihv MySQL-client-4.1.22-0.i386.rpm # /usr/bin/mysql_install_db --user=mysql # less /etc/my.cfn # less /etc/rc.d/init.d/mysql インストール後の設定 †DB作成&ユーザ作成 †CREATE DATABASE zf; GRANT ALL ON zf.* to zf@localhost; FLUSH PRIVILEGES; SET PASSWORD FOR zf@localhost=password('zf'); もしくは GRANT ALL ON db_name.* to user_name@localhost identified by 'password'; 文字コードを設定してDBを作成 CREATE DATABASE zf CHARACTER SET utf8; DB作成後に、文字コードを指定する場合 ALTER DATABASE zf default character set=utf8; GRANTいろいろ †権限追加 GRANT CREATE ON db名.* TO user名@localhost; GRANT DROP ON db名.* TO user名@localhost; GRANT ALTER ON db名.* TO user名@localhost; 管理者権限を持つユーザ作成 GRANT ALL PRIVILEGES ON db名.* TO user名@localhost; GRANT構文の実行権限を与える GRANT ALL PRIVILEGES ON db名.* TO user名@localhost IDENTIFIED BY 'パスワード' WITH GRANT OPTION; 権限の確認 SHOW GRANTS FOR user名@localhost \G 権限の削除 REVOKE ユーザ削除 †DELETE FROM mysql.user WHERE user='zf' AND host='localhost'; 削除できたか確認 †SELECT Host, User, Password FROM mysql.user WHERE user='zf'; MySQLインストールに関するエラー †MySQL4.1.22とPHP †RedHat?には最新のMySQLがソースからコンパイルできないらしい。(そもそもconfigureが通らない) ちょっと古いバージョンをインストールしても、PHP側でのリコンパイルで問題が発生する。 makeのエラー ext/mysql/php_mysql.lo(.text+0x2ae4): In function `zif_mysql_create_db': : undefined reference to `mysql_create_db' ext/mysql/php_mysql.lo(.text+0x2cd5): In function `zif_mysql_drop_db': : undefined reference to `mysql_drop_db' collect2: ld returned 1 exit status 参考サイト http://tool.wedia.jp/manual/mysql_jp_411/manual_2.html http://www.databasebank.com/programmers/frm_detail.php?v_id=1393 上記サイトによれば、1174行目のmysql_drop_dbをコメントアウトすれば、うまくいくようである。 vi /usr/local/src/php-5.0.3/ext/mysql/php_mysql.c PHP+MySQL+phpMyAdmin?で文字化け †DBをUTF-8に設定。コンソールからSELCTしても、phpMyAdmin?で見ても文字化けしてないのに、PHPで取得すると文字化けする。 解決策1 †以下のように、my.cnfにinit-connectを追記して解決。 [mysqld] default-character-set = utf8 init-connect=SET NAMES utf8 [mysqldump] default-character-set = utf8 [mysql] 解決策2 †my.cnfの[mysqld]の項に以下のような感じで一行追加。 [mysqld] skip-character-set-client-handshake ちなみに「skip-character-set-client-handshake」は、 『サーバーの文字コード設定をクライアントでもそのまま使う』という意味。 PHPからMySQLへ接続 ~PHPからMySQLへ接続しようとした時に出たエラー1 †エラー内容 File 'NONEXISTENT/charsets/?.conf' not found (Errcode: 2) Character set '#88' is not a compiled character set and is not specified in the 'NONEXISTENT/charsets/Index' file エラーが出る原因1 PHPとMySQLを接続する際に出るエラーだそうです。 PHPをインストールするときMySQLのoptionをつけていなかったので、--with-mysqlがないからっぽい。 PHPを再コンパイルする必要がある。 エラーが出る原因2 sjis.confファイルが存在しないため 解決策 エラーが出ても動作するので、放置。 PHPからMySQLへ接続 ~PHPからMySQLへ接続しようとした時に出たエラー2 †Warning: mysql_connect(): Client does not support authentication protocol requested by server; consider upgrading MySQL client in /usr/local/apache/htdocs/sample.php on line 21 phpコマンドを打って確認してみる # php -r "mysql_connect('host','user_name','password');" 結果: Warning: mysql_connect(): Client does not support authentication protocol requested by server; …略 エラーが出る原因 MySQL 4.1で「ユーザ認証」の「認証方式」が変更されました。 従って、MySQL 4.0/3.2xクライアントからMySQL 4.1/5.0サーバへの接続ができなくなりました。 回避策として調べたとおり「--old-passwords」オプションをつけてmysqldを起動することになります。 接続元サーバMySQLのバージョン : 4.1.7a 接続先サーバMySQLのバージョン : 4.1.? なぜ、接続元も接続先も4.1系なのに、エラーが出るのか? PHPからは、old passwordsを使ってでなければ接続できないらしい。 解決策 UPDATE user SET password = OLD_PASSWORD('password') WHERE host = 'host' AND user = 'user_name'; FLUSH PRIVILEGES; Comment †
Counter: 23279,
today: 2,
yesterday: 0
|