今回のインストールのプラットホームは下記のとおりです。
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アドレスに変更する事。