line-01
line_glay
>
 welcome!   page:rdms/mysql/mysql.html
  odic01   MySQL
  odmichi04    
 home:top   server library:top
top
line_glay

MySQL

    1. MySQL
      1. MySQL
      2. Linuxへのインストール
      3. 環境と設定
      4. ユーザ管理
      5. バックアップとリストア
      6. database
      7. table
      8. カラム
      9. 補記
    2. phpMyAdmin
    3. WindowsとMySQL

MySQL

MySQL(マイエスキューエル)は1995年、フィンランドのMichael Widenius氏が開発したデーターベースサーバです。MySQLはPostgreSQLとよくくらべられますが、機能面はさておきシンプル、高速性が強調されています。
1998年5月のMySQL 3.21.30から正式に日本語処理が可能となりました。

MySQL開発元        http://www.mysql.com
日本国内代理店     http://www.softagency.co.jp
日本MySQLユーザ会   http://www.mysql.gr.jp

ここではTurboLinux 7 server にRPMでインストールされたMySQL-3.23.39-4を前提に話をすすめます。
なお、TurboLinux 7 serverの初期状態ではPHPとの連携がうまくいっていませんでした。これには少々悩み、一日ほどつぶれてしまいました。Turbolinuxユーザーズフォーラムなどを参照した結果、/etc/http/php.iniファイルの設定を以下のように変更することで解決しました。報告かたがた明記しておきます。

[ 追記 ]extension=mysql.so
[ 修正 ]mysql.default_socket= を mysql.default_socket=/var/lib/mysql.sock


Linuxへのインストール

《 ■ ソースからのインストールの前に ■ 》
マニュアル本などによると、RPMのApacheやPHPとtar版のMySQLが混在することは避けたほうがいい、とあります。筆者はこの状況を試したことはありませんが、記述に従うなら、RPMパッケージのAacheとPHPがインストールされているなら、あらかじめこれらをアンインストールすることになります。

# rpm -e --nodeps apache
# rpm -e --nodeps php

これでアンインストールが済みました。
この後、MySQLをインストールし、ソースからApacheとPHPの順にインストールします。
《 ■ ソースからのインストール Linux ■ 》
ここでは「/usr/local/src/mysql」にダウンロードして作業を進めることにします。

MySQL開発元からのソースの入手

# mkdir /usr/local/src/mysql
# cd /usr/local/src/mysql
# tar zxvf mysql-4.0.1x.tar.gz
# cd mysql-4.0.1x
# groupadd mysql
# useadd -g mysql mysql
# passwd mysql
# New password: xxxxxxxxxx
# Retype password: xxxxxxxxxx
# ./configure --prefix=/usr/local/mysql --with-charset=ujis --with-extar-charsets=all --with-mysqld-user=mysql
# make
# make install

指定意味上記設定
--prefixインストールするディレクトリ/user/local/mysql
--with-charset文字コードセットujis(EUC)
--with-extar-charsets他のサポートする文字コード =allですべて
--with-mysqld-userMySQLデーモンを起動するユーザmysql

パーミッションの設定です。

# chown -R mysql.mysql /usr/local/mysql

MySQLサーバをコマンドラインで立ち上げるとき、コマンドをフルパスで入力しないでいいようにリンクしておきます。

# cd /usr/bin
# ln -s ../local/mysql/bin/mysql mysql
# ln -s ../local/mysql/bin/mysql mysqladmin
# ln -s ../local/mysql/bin/mysql mysqldump

MySQLサーバの起動コマンドは以下です。

# /use/local/mysql/bin/mysqld_safe &

この起動では、PC機を再起動するとMySQLサーバは立ち上がりません。そこでわたしの場合 /etc/rc.d/rd.local に上記コマンドを追記しました。
次に、ライブラリを利用できるようにします。 /etc/ld.so.conf に以下を追記します。

/usr/local/mysql/lib

なお、makeでMySQLをインストールした場合のアンインストールは以下のコマンドです。

# make uninstall

この他の設定は、RPMパッケージの場合と同等です。

 環境と設定 

MySQLのrpmパッケージのファイル構成は以下です。カッコ内はソースからインスツールした場合です。

/var/lib/mysql/mysql.sock・・・・・・・ ← ソケットファイル--mysql実行時にのみ表れる
/var/lib/mysql(/usr/local/mysql) ・・・← データベースディレクトリ
/etc/rc.d/init.d ・・・・・・・・・・・← initスクリプト
/usr/bin/・・・・・・・・・・・・・・・← コマンド
/usr/sbin/ ・・・・・・・・・・・・・・← mysqlサーバ
/usr/share/mysql/・・・・・・・・・・・← エラーメッセージファイルなど
/usr/lib/mysql/・・・・・・・・・・・・← ライブラリ
/usr/include/mysql/・・・・・・・・・・← ヘッダーファイル

この状態では使用できません。TurboLinuxの「MySQLの初期設定」によると、以下のファイルを作成し実行します。
以降はRPMでの環境を前提とします。

#!/bin/sh
mysql_datadir=/var/lib/mysql
mkdir $mysql_datadir
mkdir $mysql_datadir/mysql
mkdir $mysql_datadir/test
/sbin/install-info /usr/share/info/mysql.info.gz /usr/share/info/dir
useradd -M -r -d $mysql_datadir -s /bin/bash -c "MySQL server" mysql
chown -R mysql $mysql_datadir
mysql_install_db
chown -R mysql $mysql_datadir

このスクリプトファイルを任意のディレクトリに保存し、任意の名前を付け、実行権限を与えます。
ここでは /root に musql.ini として保存しました。

# cd
# chmod 744 musql.ini
# /root/musql.ini

これで初期設定が終ったことになります。参考として「初期設定の方法を教えて下さい」 を御覧下さい。
この状態でサーバを再起動をするとMySQLは立ち上がりません。そこでわたしの場合、/etc/rc.d/rc.local に以下の一行を追記しました。

/usr/bin/safe_mysqld &

起動状態は、

# ps aux | grep mysql

また他の自動起動の手順としてはコマンドで、

# chkconfig mysqld on

と打つとランレベル3,4,5の設定となり、起動します。この状態を知るには、

# chkconfig --list

で知ることができます。


ユーザ管理

ここからは実際に使用するための設定です。
《 ◆ MySQLユーザの登録 ◆ 》
MySQLユーザの追加をします。MySQLデーモンはUNIXユーザ・mysql(/etc/passwdに存在するユーザ)で作動します。

# adduser mysql

《 ◆ MySQLrootユーザのパスワード設定 ◆ 》
MySQLrootユーザのパスワード設定をします。MySQLサーバへrootユーザとしてアクセスできるようになります。

# mysqladmin -u root password 'パスワード'

セキュリティー上、MySQL初期設定のパスワードなしでアクセスできる不特定ユーザの削除をします。

# mysql -u root -p
mysql> use myqsl
mysql> DELETE FROM user WHERE Password = "";
mysql> exit

《 ◆ テーブルのリフレッシュ ◆ 》
テーブルのリフレッシュは、

# mysql -u root -p
mysql> FLUSH PRIVILEGES;

です。
《 ◆ MySQLデータベースサーバへの接続と切断 ◆ 》
MySQLデータベースサーバへの接続と切断です。

# mysql -u root -h hosutoname -p

上記「-u ユーザ名 -h ホスト名 -p パスワード 」のホスト名がlocaluhostの場合は省略できます。あるいは、

# Enter Password ********
mysql>         ← このコマンドプロンプトになる

MySQLサーバからの切断(logout)は、

mysql> quit

です。
《 ◆ ユーザの追加/権限 ◆ 》
ユーザの追加はシェルプロンプトからroot権限でMySQLサーバにアクセスします。ここでいうユーザは、OSアカウントユーザとは関係なく、MySQL独自のものです。

mysql> CREATE DATABASE mydb;
mysql> GRANT ALL ON mydb.* TO tako@localhost IDENTIFIEDC BY "設定するパスワード";
mysql> FLUSH PRIVILEGES;

上記のユーザ「tako」はデータベース「mydb」に対してすべての権限を持っています。

mysql> GRANT ALL ON mydb.abcd TO tako@localhost IDENTIFIEDC BY "設定するパスワード";

上記のユーザ「tako」はデータベース「mydb」のテーブル「abcd」に対してすべての権限を持っています。

mysql> GRANT ALL ON *.* TO tako@localhost IDENTIFIEDC BY "設定するパスワード";

上記のユーザ「tako」はMySQLに対してすべての権限を持っています。
ユーザ権限の取消は以下です。

mysql> REVOKE ALL ON mydb.abcd FROM tako@localhost;

ユーザの削除は以下です。

mysql> DELETE FROM user WHERE user='tako';

《 ◆ リダイレクト ◆ 》
リダイレクト(バックアップとデータの復旧)は、キーボードから逐次SQL文を入力するのではなく、SQL文をファイルに保存しておきそれを読み込ませて、実行することで行います。また、逆も可能です。
登録済みのユーザ一覧は以下です。

# mysql -u root -p 'xxxxxxxxx'
mysql> SELECT host,user,password FROM mysql.user;


 ☞ バックアップとリストア 

バックアップの方法は以下があります。
  1. フォルダごとコピーする
  2. phpMyAdminを使う
  3. mysqlコマンドを打つ
ここでは「mysqlコマンドを打つ」ことでのバックアップ手順をみていきます。

mysqldump --Lock-tables -u root -p RootPassword DatabaseName > FIleName
mysqldump -A -u root -p ルートのパスワード -Q --opt -r バックアップ先ファイル名

特定のデータベース

mysqldump データベース名 -u root -p ルートのパスワード -Q --opt -r バックアップ先ファイル名

特定のテーブル

mysqldump データベース名 テーブル名1 テーブル名2 -u root -p ルートのパスワード -Q --opt -r バックアップ先ファイル名

全データベースのリストア
mysqlコマンドによる特定のデータベースのリストア

mysql -u root -p ルートのパスワード データベース名 < バックアップ・ファイル名


 ☞ database 

データベースの作成

$ mysql -u root -p 'xxxxxxxxx'
mysql> create database databasename;

データベースの削除

$ mysql -u root -p 'xxxxxxxxx'
mysql> drop database databasename;

データベースの閲覧

$ mysql -u root -p 'xxxxxxxxx'
mysql> show databases;


 ☞ table 

テーブルの作成

$ mysql -u root -p 'xxxxxxxxx'
mysql> use databasename;
mysql> CREATE TABLE tablename (
        no int(11) unsigned auto_increment NOT NULL,
        code char(3) default NULL,
        name text default NULL,
        url text default NULL,
        cdate datetime,
        PRIMARY KEY (no)
        ) TYPE=MyISAM;

テーブルの閲覧

$ mysql -u root -p 'xxxxxxxxx'
mysql> use databasename;
mysql> show tables;

テーブル構造の閲覧

$ mysql -u root -p 'xxxxxxxxx'
mysql> use databasename;
mysql> show fields from link;


 ☞ カラム 

テーブルにデータを挿入

$ mysql -u root -p 'xxxxxxxxx'
mysql> use databasename;
mysql> INSERT INTO tablename(カラム1,カラム2) VALUES(値1,値2) ;



補記

《 ■ 参照URL   ※サイト内参照ページ    引用、参照書籍 ■ 》
MySQL開発元
日本国内代理店
日本MySQLユーザ会
TurboLinuxユーザフォーラム/初期設定の方法を教えて下さい
※ PostgreSQLとMySQL のコマンド対応表
MySQLデータベース自動バックアップ運用
『基礎PHP』 著/WINGSプロジェクト 刊/インプレス

*“このページの作成にあたり、上記に掲げたURLや書籍を参考にしました。謝意を表します。具体的な引用については明記しました。内容の間違いや、誤字は筆者の責任であり、関係する参照先の責任ではありません”

top     home:top     server library:top     PHP PostgreSQL MySQL サンプルスクリプト     SiteMap     Open SiteMap