a-Column

【FreeBSD】MySQLインストール

今回のインストールのプラットホームは下記のとおりです。

OS:FreeBSD4.11
・mysql-5.0.18.tar.gz

# adduser mysql

PASSはtestを仮設定。
もしくは/sbin/nologinとしてシェルを奪う。

# tar zxvf mysql-5.0.18.tar.gz

# cd mysql-5.0.18
# mkdir /usr/local/mysql

# ./configure --with-charset=ujis --with-mysqld-user=mysql --prefix=/usr/local/mysql

#make;make install

・データベースの初期化

#/usr/local/mysql/bin/mysql_install_db --user=mysql

・ディレクトリィの所有者変更

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

# chgrp -R mysql /usr/local/mysql/

・MySQLの設定ファイルをコピーします。

# cp /usr/local/src/mysql-5.0.18/support-files/my-medium.cnf /etc/my.cnf

・MySQLの起動

# /usr/local/mysql/bin/mysqld_safe &
------------------------------------------------------------

プラットホーム
・Linux ES3update5
・MySQL4.1.22

まずは起動ユーザーの作成。
# adduser mysql

次にvipwでmysqlユーザーのシェルを奪う。
/bin/bash>/sbin/nologin

ソースの展開と移動
# tar zxvf mysql-4.1.22.tar.gz
# cd mysql-4.1.22

configure
#/configure --prefix=/usr/local/mysql --with-mysqld-user=mysql
--with-innodb --with-charset=ujis --with-extra-charsets=all

コンパイルとインストール
# make;make install

データベースの初期化
#/usr/local/mysql/bin/mysql_install_db --user=mysql

パーミッションの設定
# chown -R mysql.mysql /usr/local/mysql

設定ファイルの作成
# cp /usr/local/mysql/share/mysql/my-medium.cnf /etc/my.cnf

設定ファイルの編集
# vi /etc/my.cnf

[mysqld]と書かれている行に↓を1行追加する。
language = /usr/local/mysql/share/mysql/japanese
innodb_data_file_path=ibdata1:100M

■手動起動
# /usr/local/mysql/bin/mysqld_safe &

■自動起動設定
# cp /usr/local/mysql/share/mysql/mysql.server /etc/init.d/mysqld
# chmod +x /etc/init.d/mysqld

# /sbin/chkconfig --add mysqld
# /sbin/chkconfig --level 3 mysqld on

動作テスト
# /usr/local/mysql/bin/mysqlshow

下記の内容が表示されれば成功。
+-----------+
| Databases |
+-----------+
| mysql |
| test |
+-----------+

最後にMySQLのパスワード設定をおこないます。
#/usr/local/mysql/bin/mysqladmin -u root password ******

====================================================
・主なconfigureオプション

起動時にキャラクタセットを変えられるようにする。
--with-extra-charsets=all

デフォルトのキャラクタセット。ujis(EUC-JP)やsjis
などを指定できる。
--with-charset=ujis

インストール先
--prefix=/usr/local/mysql

MySQLの待ちうけポートの変更(デフォルト3306)
--with-tcp-port=port-number

MySQLの起動ユーザーの指定
--with-mysqld-user=username

InnoDB形式のテーブルを使えるようにする。これがないと
トランザクション処理ができません。
--with-innodb
====================================================


起動がうまくいかない場合
/usr/local/mysql/var のhostname.errの中身を参照する。

-----------------------------------------------------------


★MySQLにログインしてみよう。
MySQLのインストールが済むと、自動的にrootユーザが
作成されているので、それを使います。
(mysqlやmysql-adminの部分は、サーバの設定によって
異なる場合があるので、管理者に確認を行いましょう)

#/usr/local/mysql/bin/mysql -u mysql -p
#/usr/local/mysql/bin/mysql -u mysql-admin -p

パスワードを入力すると、プロンプトが返ってきます。

※OSのrootとMySQLのrootとは、別の扱いになるので、
MySQLのrootのパスワードを設定しないと下記のような
エラーが返ってきます。
--------------------------------------------------------
ERROR 1045 (28000): Access denied for user 'mysql'@'localhost' (using password: YES)
--------------------------------------------------------

下記のコマンドを打ってパスワードを設定する必要があります。
mysqladmin コマンドで設定変更を行った場合は mysqladmin reload を実行しないと変更が反映されないので注意。

#/usr/local/mysql/bin/mysqladmin -u root password "test"
#/usr/local/mysql/bin/mysqladmin reload

もしくはMySQLにログインして、下記のコマンドを入力。

mysql>SET PASSWORD FOR root=PASSWORD('new_password');

★MySQLのシャットダウンとりスタート

・MySQLのシャットダウン
#/usr/local/mysql/bin/mysqladmin -u root -p shutdown

★ユーザーの管理

MySQLはユーザーをmysqlデータベース内に登録をして管理して
います。
登録しているユーザーの一覧を見たい場合には、MySQLにログ
インした状態で下記のコマンドを使用します。

mysql>USE mysql;
mysql>SELECT user FROM user;

すべてのユーザーの一覧を見るには、下記のコマンドが便利です。
mysqlデータベースのuserテーブルの中のuserとhostとpassword
の3つのフィールドを表示する。

mysql>select user,host,password from mysql.user;

★データベースの文字コードを調べる

mysql>show create database mysql;

★既存ユーザーのパスワード変更

まず自分でログインパスワードが分かっている場合には、MySQL
に一回ログインをした後に、下記のコマンドで再設定をします。

#接続者のパスワード変更
mysql> SET PASSWORD FOR user = PASSWORD('password')

★ユーザーの作成

ユーザーは2つの違った方法で追加できる。
基本は、grunt文を使用する方法だ。
grant文の使用するオプションは下記の通りだ。

grant <許可する作業> on データベース名.* to ユーザー名@ドメイン名 identified by 'パスワード';

かなりややこしいのでいくつかの使用例を作成する。

mysql> grant select,insert,delete,update,create,drop,file,
alter,index on *.* to db_user identified by '123456';

mysql> flush privileges;

mysql> GRANT ALL PRIVILEGES ON *.* TO user@localhost IDENTIFIED BY 'password' WITH GRANT OPTION;

すべてのアクセス権限を許可して設定する場合、

mysql> grant all privileges on *.* to root identified by 'moonkin0812';

★データベースの文字コード確認

SHOW CREATE DATABASE データベース名

mysql> show variables like "char%";

★データベースを文字コードを指定して作成

CREATE DATABASE mysql_test CHARACTER SET sjis;

★データベースの作成

下記の例では、user_dbというデータベースを作成する。

mysql> create database user_db;
mysql> create database db_name CHARACTER SET ujis;
mysql> create database db_name CHARACTER SET UTF8;

★データベースの表示

下記の例では、データベースの一覧を表示します。

mysql> show databases;

★データベースの選択

下記の例では、mysqlデータベースを操作する事を宣言。

mysql>use mysql;

★テーブルの表示

下記のコマンドを使用する前にデータベースは選択しておく事。

mysql>show tables;

★フィールドの表示

下記の例では、userテーブルの中のすべてのフィールドを
表示しています。*は、フィールド名を使用する事が可能で
す。

mysql>select * from user;
mysql> show fields from sasaki;
+---------+----------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------+----------+------+-----+---------+-------+
| name | char(20) | YES | | NULL | |
| persent | int(11) | YES | | NULL | |
+---------+----------+------+-----+---------+-------+
2 rows in set (0.00 sec)

★フィールドの削除

value2というフィールドを削除。

mysql >alter table test drop value2 ;

★フィールドの追加

hogehogeというデータベースのsasakiテーブルにフィールドを
追加。

mysql> create table hogehoge.sasaki(name char(20), persent int);
Query OK, 0 rows affected (0.02 sec)

★テーブル作成

下記のコマンドは、hogeというテーブルを選択している
データベースに作成するコマンドですが、

mysql>create table hoge;

下記のようなエラーがでます。つまりは1つのフィールドを
指定しないと下記のようなエラーが出ます。

A table must have at least 1 column

下記のようにフィールド情報を付与して作成します。
下記はIDとメモというフィールドで、変数の形式をintや
charaで指定しています。()の中はデータの長さをあら
わします。hogeはテーブル名です。

mysql>create table hoge (id int(10),memo char(240));

★データ(行)の挿入

下記はhogeといテーブルにデータを挿入する式ですが、
どちらで書いても同じように、idフィールドに1が、
memoフィールドに1stが入力されます。

mysql>insert into hoge values(1,'1st');
mysql>insert into hoge (id,memo) values(1,'1st');

★データ(行)の抽出

hogeテーブルからすべてのデータを確認する場合。
すべてのフィールドとデータが表示される。*に変わり
フィールドを指定することも可能。

#select * from hoge;

条件をつける場合には、下記のようになる。これでidという
フィールドが2であるものをhogeデータベースの全テーブル
から抽出します。

#select * from hoge where id = '2';

★データ(行)の削除

下記はtb_itemといテーブルのデータを削除する式
ですが、itemidフィールドが3626のデータを削除し
ています。

mysql> delete from tb_item where itemid = '3626';
Query OK, 1 row affected (0.00 sec)

★受け取れるパケットサイズの変更

MySQLには、受け取れるパケットの上限が変数によって
定められております。通常、この変数の上限値をオーバー
すると、下記のようなエラーが発生します。

Lost connection to MySQL server during query

max_allowed_packetの値を増やす事により、対応する事が
可能です。

★ユーザーの権限追加・変更

今回は、testユーザーにSelect, Insert, Update, Delete, Create,Drop, Index, Alter のみ使用可能にしたい場合です。
まずは2行目でtestユーザーを追加しています。gs6f3yh8は
パスワードになります。192.168.1.17は接続元のサーバになり
ます。"N”となっているのは、MySQLの操作の権限を示していま
す。各項目の許可は、下記の通りです。

Select_priv
Insert_priv
Update_priv
Delete_priv
Create_priv
Drop_priv
Reload_priv
Shutdown_priv
Process_priv
File_priv
Grant_priv
References_priv
Index_priv
Alter_priv

3行目で、データベースに対する操作の権限を設定しております。
massデータベースに対して、testユーザーの権限を下記の項目で
設定しています。

Select_priv
Insert_priv
Update_priv
Delete_priv
Create_priv
Drop_priv
Grant_priv
References_priv
Index_priv
Alter_priv

mysql> use mysql;
mysql> insert into user values('192.168.1.17','test',PASSWORD('gs6f3yh8'),'N','N','N','N','N','N','N','N','N','N','N','N','N','N');
mysql> insert into db values('192.168.1.17','mass','test','Y','Y','Y','Y','Y','Y','N','N','Y','Y');
mysql> flush privileges;
mysql> quit


■アクセス制限

kataokaユーザ が 192.168.1.* から xxxdb へアクセスできるように追加設定する。

mysql> grant all privileges on xxxdb.* to kataoka@"192.168.1.%" -> identified by 'hoge' with grant option ;

kataoka@"%" 全てのホストからアクセス可能

kataoka@localhost サーバにログインしてからアクセス可能

kataoka@"192.168.1.12" IPアドレスが192.168.1.12のホストからアクセス可能

kataoka@"mydomain.co.jp" ドメインがmydomain.co.jpからのアクセスが可能

■暗号化

文字列'hoge'をパスワード用に暗号化した結果を返します。

mysql> SELECT PASSWORD('hoge');

■エラー

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

localhostからrootでアクセス権限を設定しても、上記のエラーが発生する場合には、/etc/hostsでLocalhostのIPアドレスを、
127.0.0.1からMySQLが待ちうけするIPアドレスに変更する事。

Last Update : 2006年02月09日 (木) 06:04