*MySQLインストール(Sourceからインストール) [#c58b8076]

**ユーザ作成 [#n8df9c3c]
 # groupadd mysql
 # useradd -g mysql mysql
 # getent group mysql

**インストール [#ya0a2313]
 # 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初期化 [#qfbf4742]
 # /usr/local/mysql/bin/mysql_install_db --user=mysql

**パスを追加 [#m6f04841]
 # vi /etc/profile
 export PATH=$PATH:/usr/local/mysql/bin

**設定 [#k8480f6e]
 # cp /usr/local/mysql/share/mysql/my-medium.cnf /etc/my.cnf

**自動起動 [#u3f90e72]
 # 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

**起動 [#l5e35baa]
 # ./mysql start

 # /usr/local/mysql/bin/mysqld_safe --user=mysql &
 # /etc/init.d/mysql start

**起動確認 [#c754036f]
 # ps -auxw | grep mysql

*MySQLインストール(RPMからインストール) [#c022a18c]
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

*インストール後の設定 [#pa91517d]

**DB作成&ユーザ作成 [#j583b7c9]
 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';
 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いろいろ [#w9475f30]
権限追加
 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

**ユーザ削除 [#g62b1540]
 DELETE FROM mysql.user WHERE user='zf' AND host='localhost';

**削除できたか確認 [#n146870b]
 SELECT Host, User, Password FROM mysql.user WHERE user='zf';


*MySQLインストールに関するエラー [#hd3ba3db]

**MySQL4.1.22とPHP [#q5b07ae9]
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で文字化け [#d99fb6d7]
DBをUTF-8に設定。コンソールからSELCTしても、phpMyAdminで見ても文字化けしてないのに、PHPで取得すると文字化けする。

***解決策1 [#wc7f3dcd]
以下のように、my.cnfにinit-connectを追記して解決。 

 [mysqld]
 default-character-set = utf8
 init-connect=SET NAMES utf8
 [mysqldump]
 default-character-set = utf8
 [mysql]

***解決策2 [#n4e9f885]
my.cnfの[mysqld]の項に以下のような感じで一行追加。

 [mysqld]
 skip-character-set-client-handshake

ちなみに「skip-character-set-client-handshake」は、
『サーバーの文字コード設定をクライアントでもそのまま使う』という意味。

**PHPからMySQLへ接続 ~PHPからMySQLへ接続しようとした時に出たエラー1 [#l52df961]
エラー内容
 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 [#j088f162]

 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;

&br;
*Comment [#v685ab56]
#comment_nospam
&br;
#counter

IP:121.2.154.132 TIME:"2009-04-08 (水) 01:33:25" REFERER:"http://wiki.minaco.net/index.php" USER_AGENT:"Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; ja-JP-mac; rv:1.9.0.8) Gecko/2009032608 Firefox/3.0.8"

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS