Linux Memo/MySQL
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
開始行:
*MySQL [#m93eeef6]
RIGHT:更新日 &lastmod();
**MySQLのインストール [#r0532473]
MySQLのソースを[[ここ:http://dev.mysql.com/downloads/]]の...
$ su
# /usr/sbin/useradd mysql
homeディレクトリを/usr/local/varに変更
$ tar zxvf mysql-4.1.12.tar.gz
$ cd mysql-4.1.12
$ ./configure --with-charset=ujis -with-extra-charsets=a...
--with-mysqld-user=mysql
--with-charset
デフォルトで使用される文字コードを指定します。EUCならuji...
--with-extra-charset
デフォルトで指定された文字コード以外をサポートしたい場合...
"--with-extra-charset=ujis,sjis,..."のように個別に指定で...
ここでは“all”とします。このオプションを指定することで、
makeをし直さずとも、異なる文字コードでサーバを起動するこ...
--with-mysqld-user
MySQLデーモンを起動するユーザーの指定
$ make
$ su
# make install
# cp support-files/my-medium.cnf /etc/my.cnf <---(1)
(1)でコピーするファイルについて
|ファイル名|使用用途|
|my-small.cnf|64MB以下のメモリを搭載したPC|
|my-medium.cnf|128MB以下のメモリを搭載したPC|
|my-large.cnf|512MB以下のメモリを搭載したPC|
|my-huge.cnf|1GB~2GB以下のメモリを搭載したPC|
|my-innodb-heavy-4G.cnf|4GBのメモリとInnoDBで作成されたデ...
**データベースの初期化 [#y9e7af00]
以下データベースコマンドをrootで行っているがシステム関係...
# /usr/local/bin/mysql_install_db --user=mysql
Installing all prepared tables
Fill help tables
To start mysqld at boot time you have to copy support-fi...
to the right place for your system
(略)
he latest information about MySQL is available on the we...
http://www.mysql.com
Support MySQL by buying support/licenses at https://orde...
# /usr/local/var(データベース保存先)のオーナを変更
# chown -R mysql.mysql /usr/local/var
**起動 [#xb063eb2]
# /usr/local/bin/mysqld_safe --user=mysql --log &
動作確認
--logで/usr/local/var/(サーバ名).logでlogfileが作成される
以下のコマンドで結果が以下のようになればOK
# /usr/local/bin/mysqlshow
+-----------+
| Databases |
+-----------+
| mysql |
| test |
+-----------+
全てのDBを表示するには(rootのパスワード設定後は)
$ /usr/local/bin/mysqlshow -u root -p
Enter password:*****
+-----------+
| Databases |
+-----------+
| moodle |
| mysql |
| test |
| xoops |
+-----------+
***パラメータの指定 [#i813e443]
たとえば、MySQLの最大接続数を上げるには、mysqldにオプショ...
/etc/my.cnfの
[mysqld]
max_connections = 120
に追加する。
''logの取り方''
[mysqld]
log=/var/log/mysql.log
を追加
# touch /var/log/mysql.log
# chown mysql.mysql /var/log/mysql.log
**MySQLの停止 [#rd1407e2]
$ /usr/local/bin/mysqladmin -u root -p shutdown
**MySQLを動かす [#m3fb10c4]
MySQLのroot のパスワード設定
$ /usr/local/bin/mysqladmin -u root password '******' <-...
上記のmysqladminでパスワードを設定したときは以下のコマン...
$ /usr/local/bin/mysqladmin -u root -p reload
Enter password:
''rootのパスワード変更''
$ mysqladmin -u root -p password '******' <--NewPassword
Enter password: ******* <--OldPassword
「mysqladmin -u root -p reload」が必要かは不明
# mysql -u root -p
Enter password: <--1(1)のパスワードを入力
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 18 to server version: 4.1.12
Type 'help;' or '\h' for help. Type '\c' to clear the bu...
mysql>
mysql> select host,user,password from mysql.user;
+-----------+------+------------------------------------...
| host | user | password ...
+-----------+------+------------------------------------...
| localhost | root | *3*********************************...
| open2_06 | root | ...
| open2_06 | | ...
| localhost | | ...
+-----------+------+------------------------------------...
4 rows in set (0.00 sec)
***rootでmysqlにログイン [#fcdf759e]
# mysql -u root mysql
もうとつのrootのパスワードを設定(root@open2_06)
SET PASSWORD 構文でパスワードの設定。
mysql> SET PASSWORD FOR 'root'@'open2_06' = PASSWORD('**...
Query OK, 0 rows affected (0.00 sec)
すべてのことが出来るspadminというユーザを登録(ローカルのみ)
mysql> GRANT ALL PRIVILEGES ON *.* TO spadmin@localhost ...
Query OK, 0 rows affected (0.01 sec)
リモートからもすべてのことが出来るには
mysql> GRANT ALL PRIVILEGES ON *.* TO spadmin@"%" IDENTI...
の追加が必要(リモートからの許可を与えるにはローカルも必要)
GRAN実行後は
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
を必ず実行
注)ユーザ名はmysql -uで指定しない限りloginユーザ名になる
***パスワードの変更 [#t3f987d7]
mysql> SET PASSWORD FOR spadmin@localhost = PASSWORD('**...
Query OK, 0 rows affected (0.00 sec)
***ユーザ削除 [#c26fa3a9]
ユーザ削除は権限を剥奪後削除する。とりあえずログインする
$ /usr/local/bin/mysql -u root -p mytest
''権限を剥奪(revoke)''
revoke 権限 on データベース名.テーブル名 from ユーザ名@ホ...
mysql> revoke all on mytest.* from okada@'192.168.1.1';
Query OK, 0 rows affected (0.00 sec)
''登録ユーザの削除''
mysql> delete from mysql.user where host='192.168.1.1' a...
or
(mysql> DELETE FROM mysql.user WHERE user='okada';)
mysql> flush privileges;
***ユーザの権限の確認 [#s4fd0cff]
「GRANT USAGE ON *.* TO 'okada'@'localhost'」の(1)の行...
$ /usr/local/bin/mysql -u root -p
mysql> SHOW GRANTS FOR okada@localhost;
+-------------------------------------------------------...
| Grants for okada@localhost ...
+-------------------------------------------------------...
| GRANT USAGE ON *.* TO 'okada'@'localhost' IDENTIFIED B...
| GRANT ALL PRIVILEGES ON `xoops`.* TO 'okada'@'localhos...
| GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, IN...
DB名(eccubu_db)も確認できる
+-------------------------------------------------------...
3 rows in set (0.00 sec)
**データベースの作成 [#t7e8056b]
# /usr/local/bin/mysqladmin -u root -p create mytest
文字コードを指定してデータベースの作成
mysql> CREATE DATABASE hoge CHARACTER SET SJIS;
データベースの一覧
# /usr/local/bin/mysqlshow -u root -p
Enter password:
+-----------+
| Databases |
+-----------+
| mysql |
| mytest |
| test |
+-----------+
データベースの削除
# /usr/local/bin/mysqladmin -u root -p drop (DB名)
or
mysql> drop database (DB名);
このコマンドだけではmysql.dbテーブルに残っているようなの...
mysql> delete from mysql.db where Db='(DB名)';
テーブルの作成
t_test.create
create table t_test (
ID int8,
data2 int8,
data3 varchar(64) character set utf8
);
# /usr/local/bin/mysql -u root -p mytest < t_test.create
Enter password:
mysql> show fields from t_test;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| ID | bigint(20) | YES | | NULL | |
| data2 | bigint(20) | YES | | NULL | |
| data3 | varchar(64) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)
テーブル一覧
# /usr/local/bin/mysql -u root -p mytest
mysql> SHOW TABLES;
+------------------+
| Tables_in_mytest |
+------------------+
| t_test |
+------------------+
1 row in set (0.00 sec)
データの入力等(postgresqlと同じ)
mysql> insert into t_test values(1, 1001, 'JE2ISM');
Query OK, 1 row affected (0.00 sec)
mysql> select * from t_test;
+------+-------+--------+
| ID | data2 | data3 |
+------+-------+--------+
| 1 | 1001 | JE2ISM |
| 2 | 1002 | JF2LYU |
+------+-------+--------+
2 rows in set (0.00 sec)
**データベースのバックアップ/リストア [#kbb23c61]
***データベースのバックアップ [#q7130506]
# /usr/local/bin/mysqldump -u root -p --default-characte...
EUCのときは--default-character-set=ujisに,UTF8は utf8に...
***データベースのリストア [#f22863ed]
先に必要ならGRANTでユーザ等に許可を与える。
# /usr/local/bin/mysqladmin -u root -p create mytest
# /usr/local/bin/mysql -u root -p mytest < mytest.out
次のコマンドを実行
# /usr/local/bin/mysqladmin flush-privileges
**データベースの削除 [#nd1143e0]
# /usr/local/bin/mysqladmin -u root -p drop mytest
Enter password:
Dropping the database is potentially a very bad thing to...
Any data stored in the database will be destroyed.
Do you really want to drop the 'mytest' database [y/N] y
Database "mytest" dropped
***ネットワーク上から接続許可するには [#c39a52ac]
$ /usr/local/bin/mysql -u root -p
で接続し、許可するユーザ、パスワード、ネットワーク(ホス...
mysql> GRANT ALL PRIVILEGES ON mytest.* TO okada@'192.16...
mysql> flush privileges;
mysql> select host,user,password from mysql.user;
+----------------------------+------------+-------------...
| host | user | password ...
+----------------------------+------------+-------------...
| localhost | root | *B**********...
| uso5004.mie-chukyo-u.ac.jp | root | ...
| localhost | | ...
| localhost | moodleuser | *B**********...
| 192.168.1.0/255.255.255.0 | okada | *3**********...
+----------------------------+------------+-------------...
6 rows in set (0.00 sec)
リモートから
以下のコマンドで接続
$ /usr/local/bin/mysql -u okada -p mytest -h 192.168.1.1
Enter password:
***MySQLサーバーの全設定情報(変数やステータス)の表示 [#ae...
mysql> show variables;
mysql> show variables like 'key%';
--------------------------+---------+
| Variable_name | Value |
--------------------------+---------+
| key_buffer_size | 8388600 |
| key_cache_age_threshold | 300 |
| key_cache_block_size | 1024 |
| key_cache_division_limit| 100 |
--------------------------+---------+
4 rows in set (0.00 sec)
mysql> SHOW STATUS like 'key%';
------------------------+-------+
| Variable_name | Value |
------------------------+-------+
| Key_blocks_not_flushed| 0 |
| Key_blocks_unused | 28971 |
| Key_blocks_used | 24 |
| Key_read_requests | 231 |
| Key_reads | 24 |
| Key_write_requests | 0 |
| Key_writes | 0 |
------------------------+-------+
7 rows in set (0.00 sec)
*****MySQLサーバーの全設定情報(変数)の設定 [#a27848f1]
/etc/my.cnfに設定することも可能だが、直接セットしてもよい。
mysql> set Global key_buffer_size= 33554432;
Query OK, 0 rows affected (0.01 sec)
SET GLOBAL sort_buffer_size = 10 * 1024 * 1024;
SET SESSION sort_buffer_size = 10 * 1024 * 1024;
システム変数には、サーバ共通の値とセッション(接続)共通の...
前者を変更すると、その後開かれる全てのセッションに影響、...
***テーブルのエクスポート/インポート [#m1fb8e3c]
''エクスポート''
mysql> select * from t_test into outfile "/tmp/t_test.cs...
注)mysql実行ユーザのディレクトリでないと書き込み権限がな...
''インポート''
mysql> load data infile "/home/okada/mysqltest/t_test.cs...
&color(red){文字コードについて};~
LOAD DATA INFILE(インポート)はcharacter_set_database変数...
mysql> show variables like 'char%'; で確認~
character_set_database | ujis <=EUC
-Database作成時にdefault character setで指定する。
-LOAD DATA INFILEに明示的にcharacter setを指定する.
character set ujis
-character_set_databaseを変更する
mysql> set character_set_database='ujis';
***DBの変更 [#k5d794ac]
rootの場合、他のDBに変更できる
mysql> use authdb
Database changed
**簡単なチューニング [#efa8a39e]
key_buffer_size
インデックスブロック用に使用するバッファのサイズ。
インデックスを使う(つまりほとんど全ての)クエリは
この値によってパフォーマンスが大きく変わります。
よって、この値は可能な限り(もちろん稼動システムの許容範...
大きくすることが推奨されています。
適切なバッファサイズを求めるには、SHOW STATUS コマンドを...
ここで表示された Key_read_requests が、キャッシュからのキ...
Key_reads は、ディスクからのキーブロック読み取り要求回数...
つまり、Key_reads / Key_read_requests が「キャッシュミス...
この値は0.01を下回ることが良いとされています。
このときキャッシュミスレートは1%以下です。
これを上回るようだったら、
インデックスブロックのバッファサイズを大きくすることを検討
***my.cnfのパラメータ [#g8476955]
|パラメータ名|設定内容|
|port = 3306|起動ポート番号|
|key_buffer = 256M|検索に使われるインデックスをバッファに...
|max_allowed_packet = 1M|入力データ保持の最大バッファサイ...
|table_cache = 256|頻繁なアクセスに対して使うデータキャッ...
|sort_buffer_size = 1M|並べ替えのバッファサイズを設定。値...
|read_buffer_size = 1M|読み込みのバッファサイズを設定。値...
|myisam_sort_buffer_size = 64M|MyISAMで使用する並べ替えの...
|thread_cache = 8|スレッド生成のキャッシュサイズを設定。...
|query_cache_size= 16M|クエリのキャッシュサイズを設定。同...
|thread_concurrency = 8|同時に実行するスレッド数を指定。|
|join_buffer_size = 131072|完全結合(インデックスを使用し...
**ODBC [#xb3e662a]
Accessでテーブルリンク作成時の注意
もしも主キーが設定されていないテーブルをリンクした場合、...
[固有レコード識別子の選択]ダイアログが表示される。(①)...
設定されていない場合、テーブルの更新・削除などに際して、...
同期することができない。このような画面が表示された場合に...
主キーとなるフィールドを選択する(①)か、MySQLサーバ上で...
設定しないとテーブル上でデータの追加、修正ができない。~
ReadOnlyになるので注意する。~
&ref(MySQLODBC.png);
**Shellからいろいろ [#ha744e3c]
***テキストTAB形式でのエクスポート [#u57fdba3]
$ /usr/bin/mysql -B --skip-column-names -u ism -p -D ecc...
from dtb_customer;' > dtb_customer.txt
Enter password:
~--skip-column-namesがない場合はcolumn-namesも出力する。~
~-h 192.168.30.16 でホスト指定
***テキストTAB形式でのインポート [#e8c611c4]
$ /usr/bin/mysqlimport --local eccube_ism2 dtb_customer....
Enter password:
eccube_ism2.dtb_customer: Records: 1 Deleted: 0 Skippe...
指定されたテキストファイル名の主ファイル名に一致したテー...
~-h 192.168.30.16 でホスト指定 --localは意味が違うので必要
$ /usr/bin/mysqlimport --local eccube_ism2 dtb_customer....
192.168.30.16
Enter password:
eccube_ism2.dtb_customer: Records: 1 Deleted: 0 Skippe...
''オプション''~
~-l, --lock-tables
テキストファイルを処理する前に、すべてのテーブルへの書き...
~-L, --local
クライアントから入力ファイルを読み取る。デフォルトでは、l...
~-r, --replace
~--replace オプションおよび --ignore オプションは、既存レ...
&color(red){defalt文字がNULLの場合はエクスポートされるとN...
***テーブルのデータ削除 [#y46e11b2]
$ /usr/bin/mysql -B --skip-column-names -u ism -p -D ecc...
from dtb_customer;' -h 192.168.30.16
Enter password:
***パスワード入れるには [#q446c790]
~--password=****とすれば良い
$ /usr/bin/mysqlimport --local eccube_ism2 dtb_customer....
word=**** -h 192.168.30.16
eccube_ism2.dtb_customer: Records: 1 Deleted: 0 Skippe...
**EC CUBEの複数の店のユーザを単一管理 [#g797abf6]
DBからテーブルをエクスポートしてそれを別テーブルにインポ...
ある時は上書きする。
''tbsync.php''~
<?php
$cmd = "/usr/bin/mysql -B --skip-column-names -u ...
exec($cmd, $output);
$fp=fopen("/home/okada/temp/dtb_customer.txt","w");
foreach ($output as $a){
fputs($fp,$a."\n");
}
fclose($fp);
$cmd ="/usr/bin/mysqlimport --local eccube_ism2 /...
exec($cmd);
?>
html/entry/complete.phpとhtml/mypageのrefusal_complete.ph...
require_once("/home/okada/temp/tbsync.php");
を追加
**参考 [#ncd66820]
[[MySQLクイック・リファレンス:http://www.bitscope.co.jp/t...
[[MySQLの変数:http://www.limy.org/program/db/mysql/mysql_...
---------------------------------------------------------...
RIGHT:[[元ページ:https://wwwism.dyndns.org/hp/linux/mysql...
終了行:
*MySQL [#m93eeef6]
RIGHT:更新日 &lastmod();
**MySQLのインストール [#r0532473]
MySQLのソースを[[ここ:http://dev.mysql.com/downloads/]]の...
$ su
# /usr/sbin/useradd mysql
homeディレクトリを/usr/local/varに変更
$ tar zxvf mysql-4.1.12.tar.gz
$ cd mysql-4.1.12
$ ./configure --with-charset=ujis -with-extra-charsets=a...
--with-mysqld-user=mysql
--with-charset
デフォルトで使用される文字コードを指定します。EUCならuji...
--with-extra-charset
デフォルトで指定された文字コード以外をサポートしたい場合...
"--with-extra-charset=ujis,sjis,..."のように個別に指定で...
ここでは“all”とします。このオプションを指定することで、
makeをし直さずとも、異なる文字コードでサーバを起動するこ...
--with-mysqld-user
MySQLデーモンを起動するユーザーの指定
$ make
$ su
# make install
# cp support-files/my-medium.cnf /etc/my.cnf <---(1)
(1)でコピーするファイルについて
|ファイル名|使用用途|
|my-small.cnf|64MB以下のメモリを搭載したPC|
|my-medium.cnf|128MB以下のメモリを搭載したPC|
|my-large.cnf|512MB以下のメモリを搭載したPC|
|my-huge.cnf|1GB~2GB以下のメモリを搭載したPC|
|my-innodb-heavy-4G.cnf|4GBのメモリとInnoDBで作成されたデ...
**データベースの初期化 [#y9e7af00]
以下データベースコマンドをrootで行っているがシステム関係...
# /usr/local/bin/mysql_install_db --user=mysql
Installing all prepared tables
Fill help tables
To start mysqld at boot time you have to copy support-fi...
to the right place for your system
(略)
he latest information about MySQL is available on the we...
http://www.mysql.com
Support MySQL by buying support/licenses at https://orde...
# /usr/local/var(データベース保存先)のオーナを変更
# chown -R mysql.mysql /usr/local/var
**起動 [#xb063eb2]
# /usr/local/bin/mysqld_safe --user=mysql --log &
動作確認
--logで/usr/local/var/(サーバ名).logでlogfileが作成される
以下のコマンドで結果が以下のようになればOK
# /usr/local/bin/mysqlshow
+-----------+
| Databases |
+-----------+
| mysql |
| test |
+-----------+
全てのDBを表示するには(rootのパスワード設定後は)
$ /usr/local/bin/mysqlshow -u root -p
Enter password:*****
+-----------+
| Databases |
+-----------+
| moodle |
| mysql |
| test |
| xoops |
+-----------+
***パラメータの指定 [#i813e443]
たとえば、MySQLの最大接続数を上げるには、mysqldにオプショ...
/etc/my.cnfの
[mysqld]
max_connections = 120
に追加する。
''logの取り方''
[mysqld]
log=/var/log/mysql.log
を追加
# touch /var/log/mysql.log
# chown mysql.mysql /var/log/mysql.log
**MySQLの停止 [#rd1407e2]
$ /usr/local/bin/mysqladmin -u root -p shutdown
**MySQLを動かす [#m3fb10c4]
MySQLのroot のパスワード設定
$ /usr/local/bin/mysqladmin -u root password '******' <-...
上記のmysqladminでパスワードを設定したときは以下のコマン...
$ /usr/local/bin/mysqladmin -u root -p reload
Enter password:
''rootのパスワード変更''
$ mysqladmin -u root -p password '******' <--NewPassword
Enter password: ******* <--OldPassword
「mysqladmin -u root -p reload」が必要かは不明
# mysql -u root -p
Enter password: <--1(1)のパスワードを入力
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 18 to server version: 4.1.12
Type 'help;' or '\h' for help. Type '\c' to clear the bu...
mysql>
mysql> select host,user,password from mysql.user;
+-----------+------+------------------------------------...
| host | user | password ...
+-----------+------+------------------------------------...
| localhost | root | *3*********************************...
| open2_06 | root | ...
| open2_06 | | ...
| localhost | | ...
+-----------+------+------------------------------------...
4 rows in set (0.00 sec)
***rootでmysqlにログイン [#fcdf759e]
# mysql -u root mysql
もうとつのrootのパスワードを設定(root@open2_06)
SET PASSWORD 構文でパスワードの設定。
mysql> SET PASSWORD FOR 'root'@'open2_06' = PASSWORD('**...
Query OK, 0 rows affected (0.00 sec)
すべてのことが出来るspadminというユーザを登録(ローカルのみ)
mysql> GRANT ALL PRIVILEGES ON *.* TO spadmin@localhost ...
Query OK, 0 rows affected (0.01 sec)
リモートからもすべてのことが出来るには
mysql> GRANT ALL PRIVILEGES ON *.* TO spadmin@"%" IDENTI...
の追加が必要(リモートからの許可を与えるにはローカルも必要)
GRAN実行後は
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
を必ず実行
注)ユーザ名はmysql -uで指定しない限りloginユーザ名になる
***パスワードの変更 [#t3f987d7]
mysql> SET PASSWORD FOR spadmin@localhost = PASSWORD('**...
Query OK, 0 rows affected (0.00 sec)
***ユーザ削除 [#c26fa3a9]
ユーザ削除は権限を剥奪後削除する。とりあえずログインする
$ /usr/local/bin/mysql -u root -p mytest
''権限を剥奪(revoke)''
revoke 権限 on データベース名.テーブル名 from ユーザ名@ホ...
mysql> revoke all on mytest.* from okada@'192.168.1.1';
Query OK, 0 rows affected (0.00 sec)
''登録ユーザの削除''
mysql> delete from mysql.user where host='192.168.1.1' a...
or
(mysql> DELETE FROM mysql.user WHERE user='okada';)
mysql> flush privileges;
***ユーザの権限の確認 [#s4fd0cff]
「GRANT USAGE ON *.* TO 'okada'@'localhost'」の(1)の行...
$ /usr/local/bin/mysql -u root -p
mysql> SHOW GRANTS FOR okada@localhost;
+-------------------------------------------------------...
| Grants for okada@localhost ...
+-------------------------------------------------------...
| GRANT USAGE ON *.* TO 'okada'@'localhost' IDENTIFIED B...
| GRANT ALL PRIVILEGES ON `xoops`.* TO 'okada'@'localhos...
| GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, IN...
DB名(eccubu_db)も確認できる
+-------------------------------------------------------...
3 rows in set (0.00 sec)
**データベースの作成 [#t7e8056b]
# /usr/local/bin/mysqladmin -u root -p create mytest
文字コードを指定してデータベースの作成
mysql> CREATE DATABASE hoge CHARACTER SET SJIS;
データベースの一覧
# /usr/local/bin/mysqlshow -u root -p
Enter password:
+-----------+
| Databases |
+-----------+
| mysql |
| mytest |
| test |
+-----------+
データベースの削除
# /usr/local/bin/mysqladmin -u root -p drop (DB名)
or
mysql> drop database (DB名);
このコマンドだけではmysql.dbテーブルに残っているようなの...
mysql> delete from mysql.db where Db='(DB名)';
テーブルの作成
t_test.create
create table t_test (
ID int8,
data2 int8,
data3 varchar(64) character set utf8
);
# /usr/local/bin/mysql -u root -p mytest < t_test.create
Enter password:
mysql> show fields from t_test;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| ID | bigint(20) | YES | | NULL | |
| data2 | bigint(20) | YES | | NULL | |
| data3 | varchar(64) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)
テーブル一覧
# /usr/local/bin/mysql -u root -p mytest
mysql> SHOW TABLES;
+------------------+
| Tables_in_mytest |
+------------------+
| t_test |
+------------------+
1 row in set (0.00 sec)
データの入力等(postgresqlと同じ)
mysql> insert into t_test values(1, 1001, 'JE2ISM');
Query OK, 1 row affected (0.00 sec)
mysql> select * from t_test;
+------+-------+--------+
| ID | data2 | data3 |
+------+-------+--------+
| 1 | 1001 | JE2ISM |
| 2 | 1002 | JF2LYU |
+------+-------+--------+
2 rows in set (0.00 sec)
**データベースのバックアップ/リストア [#kbb23c61]
***データベースのバックアップ [#q7130506]
# /usr/local/bin/mysqldump -u root -p --default-characte...
EUCのときは--default-character-set=ujisに,UTF8は utf8に...
***データベースのリストア [#f22863ed]
先に必要ならGRANTでユーザ等に許可を与える。
# /usr/local/bin/mysqladmin -u root -p create mytest
# /usr/local/bin/mysql -u root -p mytest < mytest.out
次のコマンドを実行
# /usr/local/bin/mysqladmin flush-privileges
**データベースの削除 [#nd1143e0]
# /usr/local/bin/mysqladmin -u root -p drop mytest
Enter password:
Dropping the database is potentially a very bad thing to...
Any data stored in the database will be destroyed.
Do you really want to drop the 'mytest' database [y/N] y
Database "mytest" dropped
***ネットワーク上から接続許可するには [#c39a52ac]
$ /usr/local/bin/mysql -u root -p
で接続し、許可するユーザ、パスワード、ネットワーク(ホス...
mysql> GRANT ALL PRIVILEGES ON mytest.* TO okada@'192.16...
mysql> flush privileges;
mysql> select host,user,password from mysql.user;
+----------------------------+------------+-------------...
| host | user | password ...
+----------------------------+------------+-------------...
| localhost | root | *B**********...
| uso5004.mie-chukyo-u.ac.jp | root | ...
| localhost | | ...
| localhost | moodleuser | *B**********...
| 192.168.1.0/255.255.255.0 | okada | *3**********...
+----------------------------+------------+-------------...
6 rows in set (0.00 sec)
リモートから
以下のコマンドで接続
$ /usr/local/bin/mysql -u okada -p mytest -h 192.168.1.1
Enter password:
***MySQLサーバーの全設定情報(変数やステータス)の表示 [#ae...
mysql> show variables;
mysql> show variables like 'key%';
--------------------------+---------+
| Variable_name | Value |
--------------------------+---------+
| key_buffer_size | 8388600 |
| key_cache_age_threshold | 300 |
| key_cache_block_size | 1024 |
| key_cache_division_limit| 100 |
--------------------------+---------+
4 rows in set (0.00 sec)
mysql> SHOW STATUS like 'key%';
------------------------+-------+
| Variable_name | Value |
------------------------+-------+
| Key_blocks_not_flushed| 0 |
| Key_blocks_unused | 28971 |
| Key_blocks_used | 24 |
| Key_read_requests | 231 |
| Key_reads | 24 |
| Key_write_requests | 0 |
| Key_writes | 0 |
------------------------+-------+
7 rows in set (0.00 sec)
*****MySQLサーバーの全設定情報(変数)の設定 [#a27848f1]
/etc/my.cnfに設定することも可能だが、直接セットしてもよい。
mysql> set Global key_buffer_size= 33554432;
Query OK, 0 rows affected (0.01 sec)
SET GLOBAL sort_buffer_size = 10 * 1024 * 1024;
SET SESSION sort_buffer_size = 10 * 1024 * 1024;
システム変数には、サーバ共通の値とセッション(接続)共通の...
前者を変更すると、その後開かれる全てのセッションに影響、...
***テーブルのエクスポート/インポート [#m1fb8e3c]
''エクスポート''
mysql> select * from t_test into outfile "/tmp/t_test.cs...
注)mysql実行ユーザのディレクトリでないと書き込み権限がな...
''インポート''
mysql> load data infile "/home/okada/mysqltest/t_test.cs...
&color(red){文字コードについて};~
LOAD DATA INFILE(インポート)はcharacter_set_database変数...
mysql> show variables like 'char%'; で確認~
character_set_database | ujis <=EUC
-Database作成時にdefault character setで指定する。
-LOAD DATA INFILEに明示的にcharacter setを指定する.
character set ujis
-character_set_databaseを変更する
mysql> set character_set_database='ujis';
***DBの変更 [#k5d794ac]
rootの場合、他のDBに変更できる
mysql> use authdb
Database changed
**簡単なチューニング [#efa8a39e]
key_buffer_size
インデックスブロック用に使用するバッファのサイズ。
インデックスを使う(つまりほとんど全ての)クエリは
この値によってパフォーマンスが大きく変わります。
よって、この値は可能な限り(もちろん稼動システムの許容範...
大きくすることが推奨されています。
適切なバッファサイズを求めるには、SHOW STATUS コマンドを...
ここで表示された Key_read_requests が、キャッシュからのキ...
Key_reads は、ディスクからのキーブロック読み取り要求回数...
つまり、Key_reads / Key_read_requests が「キャッシュミス...
この値は0.01を下回ることが良いとされています。
このときキャッシュミスレートは1%以下です。
これを上回るようだったら、
インデックスブロックのバッファサイズを大きくすることを検討
***my.cnfのパラメータ [#g8476955]
|パラメータ名|設定内容|
|port = 3306|起動ポート番号|
|key_buffer = 256M|検索に使われるインデックスをバッファに...
|max_allowed_packet = 1M|入力データ保持の最大バッファサイ...
|table_cache = 256|頻繁なアクセスに対して使うデータキャッ...
|sort_buffer_size = 1M|並べ替えのバッファサイズを設定。値...
|read_buffer_size = 1M|読み込みのバッファサイズを設定。値...
|myisam_sort_buffer_size = 64M|MyISAMで使用する並べ替えの...
|thread_cache = 8|スレッド生成のキャッシュサイズを設定。...
|query_cache_size= 16M|クエリのキャッシュサイズを設定。同...
|thread_concurrency = 8|同時に実行するスレッド数を指定。|
|join_buffer_size = 131072|完全結合(インデックスを使用し...
**ODBC [#xb3e662a]
Accessでテーブルリンク作成時の注意
もしも主キーが設定されていないテーブルをリンクした場合、...
[固有レコード識別子の選択]ダイアログが表示される。(①)...
設定されていない場合、テーブルの更新・削除などに際して、...
同期することができない。このような画面が表示された場合に...
主キーとなるフィールドを選択する(①)か、MySQLサーバ上で...
設定しないとテーブル上でデータの追加、修正ができない。~
ReadOnlyになるので注意する。~
&ref(MySQLODBC.png);
**Shellからいろいろ [#ha744e3c]
***テキストTAB形式でのエクスポート [#u57fdba3]
$ /usr/bin/mysql -B --skip-column-names -u ism -p -D ecc...
from dtb_customer;' > dtb_customer.txt
Enter password:
~--skip-column-namesがない場合はcolumn-namesも出力する。~
~-h 192.168.30.16 でホスト指定
***テキストTAB形式でのインポート [#e8c611c4]
$ /usr/bin/mysqlimport --local eccube_ism2 dtb_customer....
Enter password:
eccube_ism2.dtb_customer: Records: 1 Deleted: 0 Skippe...
指定されたテキストファイル名の主ファイル名に一致したテー...
~-h 192.168.30.16 でホスト指定 --localは意味が違うので必要
$ /usr/bin/mysqlimport --local eccube_ism2 dtb_customer....
192.168.30.16
Enter password:
eccube_ism2.dtb_customer: Records: 1 Deleted: 0 Skippe...
''オプション''~
~-l, --lock-tables
テキストファイルを処理する前に、すべてのテーブルへの書き...
~-L, --local
クライアントから入力ファイルを読み取る。デフォルトでは、l...
~-r, --replace
~--replace オプションおよび --ignore オプションは、既存レ...
&color(red){defalt文字がNULLの場合はエクスポートされるとN...
***テーブルのデータ削除 [#y46e11b2]
$ /usr/bin/mysql -B --skip-column-names -u ism -p -D ecc...
from dtb_customer;' -h 192.168.30.16
Enter password:
***パスワード入れるには [#q446c790]
~--password=****とすれば良い
$ /usr/bin/mysqlimport --local eccube_ism2 dtb_customer....
word=**** -h 192.168.30.16
eccube_ism2.dtb_customer: Records: 1 Deleted: 0 Skippe...
**EC CUBEの複数の店のユーザを単一管理 [#g797abf6]
DBからテーブルをエクスポートしてそれを別テーブルにインポ...
ある時は上書きする。
''tbsync.php''~
<?php
$cmd = "/usr/bin/mysql -B --skip-column-names -u ...
exec($cmd, $output);
$fp=fopen("/home/okada/temp/dtb_customer.txt","w");
foreach ($output as $a){
fputs($fp,$a."\n");
}
fclose($fp);
$cmd ="/usr/bin/mysqlimport --local eccube_ism2 /...
exec($cmd);
?>
html/entry/complete.phpとhtml/mypageのrefusal_complete.ph...
require_once("/home/okada/temp/tbsync.php");
を追加
**参考 [#ncd66820]
[[MySQLクイック・リファレンス:http://www.bitscope.co.jp/t...
[[MySQLの変数:http://www.limy.org/program/db/mysql/mysql_...
---------------------------------------------------------...
RIGHT:[[元ページ:https://wwwism.dyndns.org/hp/linux/mysql...
ページ名: