PHPが入ったのでさらにMySQLをソースコードからインストールします。
インストールした環境
OS:CentOS 6.3 64bit
カーネルバージョン:2.6.32-279.11.1.el6.x86_64
本体:ThinkPadX61
gcc version 4.4.6 20120305 (Red Hat 4.4.6-4) (GCC)
インストールするMySQLバージョン:5.5.28
足りないライブラリyumでサクッと。
# yum install rpmdevtools cmake ncurses-devel gcc-c++ bison
MySQL公式から「Linux – Generic 2.6 (Architecture Independent), RPM Package」をダウンロードします。
http://dev.mysql.com/downloads/mysql/
rpmパッケージなんで展開します。
# mv MySQL-5.5.28-1.linux2.6.src.rpm /usr/local/src
# cd /usr/local/src
# rpmdev-extract MySQL-5.5.28-1.linux2.6.src.rpm
# mv MySQL-5.5.28-1.linux2.6.x86_64/mysql-5.5.28.tar.gz ./
# rm -rf MySQL-5.5.28-1.linux2.6.x86_64
# tar zxvf mysql-5.5.28.tar.gz
# cd mysql-5.5.28
MySQLはconfigureが無いのでcmakeを実行します。
# CFLAGS="-O3 -Wall -march=native" \ CXXFLAGS="-O3 -march=native" \ cmake . \ -DCMAKE_INSTALL_PREFIX=/opt/mysql-5.5.28 \ -DDEFAULT_CHARSET=utf8 \ -DDEFAULT_COLLATION=utf8_general_ci下記エラーが出る時はgcc-c++が入ってないっぽいです。
CMake Error: CMAKE_CXX_COMPILER not set, after EnableLanguage
cmakeに失敗したら一旦展開したソースコードをディレクトリごと削除してから再チャレンジしてください。
これ豆な。
# make -j5
# make install
mysqlユーザの作成とか
# useradd mysql
# cd /opt/mysql-5.5.28
# ln -s /opt/mysql-5.5.28 /opt/mysql
# chown -R mysql .
# chgrp -R mysql .
初期設定スクリプトを実行しますが、インストールディレクトリの一番上で実行しないとエラーが出ますので要注意。
# ./scripts/mysql_install_db
起動スクリプトをコピーします。
# cp /src/mysql-5.5.28/support-files/mysql.server /etc/init.d/mysql-5.5
起動スクリプトを修正します。
# vi /etc/init.d/mysql-5.5
basedir=
datadir=
↓
basedir=/opt/mysql
datadir=/opt/mysql/data
conf=/etc/my.cnf
↓
conf=/opt/mysql/my.cnf
my.cnfは/opt/mysql/my.cnfを参照するようにしています。
起動スクリプトの登録
# chmod 755 /etc/init.d/mysql-5.5
# cp /src/mysql-5.5.28/support-files/my-medium.cnf /opt/mysql/my.cnf
# chkconfig –list mysql-5.5
# chkconfig –add mysql-5.5
# chkconfig –list mysql-5.5
# service mysql-5.5 start
# service mysql-5.5 stop
# service mysql-5.5 start
MySQLへのパスを通します。
# vi /root/bashrc
PATH=”$PATH”:/opt/mysql/bin
パスが通っているか確認します。
# mysql -V mysql Ver 14.14 Distrib 5.5.28, for Linux (x86_64) using EditLine wrapper # mysql -u root Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 1 Server version: 5.5.28-log Source distribution Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> となったら成功です。 mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | test | +--------------------+ 4 rows in set (0.00 sec) 保持している初期データベースが表示されます。 mysql>quit 終了します。DBにテストデータを入力します。
# mysql -u root
mysql> CREATE DATABASE testdb1 DEFAULT CHARACTER SET utf8; mysql> use testdb1; mysql> create table tables1 (name VARCHAR(255) NOT NULL); mysql> INSERT INTO tables1 (name) VALUES ('TEST1 しろくま'); mysql> INSERT INTO tables1 (name) VALUES ('TEST2 ひぐま'); mysql> INSERT INTO tables1 (name) VALUES ('TEST3 つきのわぐま'); mysql> INSERT INTO tables1 (name) VALUES ('TEST4 くろくま'); レコードが登録されているか確認します。 mysql> SELECT * FROM tables1; +--------------------------+ | name | +--------------------------+ | TEST1 しろくま | | TEST2 ひぐま | | TEST3 つきのわぐま | | TEST4 くろくま | +--------------------------+ 8 rows in set (0.00 sec) mysql> quit;
# vi /opt/httpd/htdocs/testdb.php
以下の内容をコピペします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf8"> </head> <body> <?php $url = "localhost"; $user = "root"; $pass = ""; $db = "testdb1"; // MySQLへ接続する $link = mysql_connect($url,$user,$pass); if (!$link){ die("接続失敗です。".mysql_error()); } print("<P>接続に成功しました。</P>\n<BR>\n<BR>\n"); print("<P>接続先:".$url."</P>\n"); print("<P>ユーザー:".$user."</P>\n"); print("<P>パスワード:".$pass."</P>\n"); print("<P>使用するDB:".$db."</P>\n"); print("English out put\n"); print("<P>Connection:".$url."</P>\n"); print("<P>User:".$user."</P>\n"); print("<P>Password:".$pass."</P>\n"); print("<P>Use databesa name:".$db."</P>\n"); // データベースを選択する $sdb = mysql_select_db($db,$link) or die("データベースの選択に失敗しました。"); // クエリを送信する $sql = "SELECT * FROM tables1"; $result = mysql_query($sql, $link) or die("クエリの送信に失敗しました。<br />SQL:".$sql); //結果セットの行数を取得する $rows = mysql_num_rows($result); print('<P>取得したレコードを表示します</P><BR>'); while ($row = mysql_fetch_assoc($result)) { print("<P>"); print("取得した値:".$row["name"]); print("<BR>"); print("</P>\n"); } //結果保持用メモリを開放する mysql_free_result($result); // MySQLへの接続を閉じる mysql_close($link) or die("MySQL切断に失敗しました。"); ?> </body> </html> |
Webからアクセスして以下の様な表示が出たらOKです。
http://192.168.1.1/testdb.php
接続先:localhost ユーザー:root パスワード: 使用するDB:testdb1 English out put Connection:localhost User:root Password: Use databesa name:testdb1 取得したレコードを表示します name=TEST1 しろくま name=TEST2 ひぐま name=TEST3 つきのわぐま name=TEST4 くろくま
以上で終わり!