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: 20048, today: 1, yesterday: 0

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2013-09-24 (火) 14:56:18 (1425d)