リンク
インストール
# yum -y install mysql-server
初期設定
/etc/my.cnf に追加
[mysqld]
default-character-set = utf8
skip-character-set-client-handshake
[mysqldump]
default-character-set = utf8
[mysql]
default-character-set = utf8
[client]
default-character-set = utf8
[odbc]
default-character-set = utf8
MySQL起動
# service mysqld start
mysqld自動起動設定
# chkconfig mysqld on
# chkconfig --list mysqld
セキュリティ初期設定
# mysql_secure_installation
rootとしてログイン
# mysql -u root -p
現在登録されているユーザ、ホスト、パスワード確認
1
2
3
4
5
6
|
| SELECT
CONVERT(user USING utf8) AS user,
CONVERT(host USING utf8) AS host,
password
FROM
mysql.user;
|
rootパスワード登録
1
2
|
| set password for root@localhost=password('rootパスワード');
set password for root@'自分のホスト名'=password('rootパスワード');
|
一旦ログアウトし、ログインし直してみてパスワードを確認
mysql> exit
# mysql -u root -p
匿名ユーザ削除
1
|
| delete from mysql.user where user='';
|
既存データベース一覧表示
testデータベース削除
文字コード設定確認
mysql> status
または
mysql> show variables like 'char%';
新規データベースおよびユーザの追加
データベース仕様
- データベース
- testdb
- ユーザ
- testuser
- パスワード
- testpass
rootとしてログイン
# mysql -u root -p
TakeAsh.netドメイン内全体からのアクセスを許可する場合
1
|
| grant all privileges on testdb.* to testuser@'%.TakeAsh.net' identified by 'testpass';
|
192.168.0.xからのアクセスを許可する場合
1
|
| grant all privileges on testdb.* to testuser@'192.168.0.%' identified by 'testpass';
|
一旦ログアウトし、testuserでログインしてテスト
mysql> exit
# mysql -u testuser -p
既存データベース一覧表示
新規データベース作成
1
|
| create database testdb;
|
testdbに接続
既存テーブル表示
testtbl作成
1
|
| create table testtbl(num int, name varchar(50));
|
レコード登録
1
2
|
| insert into testtbl values(1,'山田太郎');
insert into testtbl values(2,'岳');
|
レコード表示
レコード更新
1
|
| update testtbl set name='山田次郎' where num=1;
|
レコード削除
1
|
| delete from testtbl where num=1;
|
テーブル削除
root パスワードのリセット
タイムゾーン確認/設定
ファイヤウォール設定
外部からmysqlへのアクセスを許可する
3306:tcp
バックアップ
mysqldump コマンド
リストア
テーブルを個別にバックアップ
- 特定のデータベースについて、テーブル毎に個別にバックアップを行うスクリプト
dump.zip
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| | UserName=testuser
DataBase=testdb
WorkFile=tables.txt
echo enter database password:
read PASSWORD
mysql -u $UserName --password=$PASSWORD --database $DataBase -e "show tables;" > $WorkFile
exec 3< $WorkFile
read LINE 0<&3
while read LINE 0<&3
do
echo ${LINE}
mysqldump -u $UserName --password=$PASSWORD --force $DataBase ${LINE} > Tables/${LINE}.sql
done
exec 3<&-
|
ダンプをテーブル毎に分割
- GitHub:TakeAsh/p-mysqlUtil

splitSqlDump.zip
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
|
-
|
|
|
|
!
-
-
|
-
|
-
|
|
|
!
!
-
|
-
|
!
-
|
|
|
!
-
|
!
|
|
|
|
|
|
!
|
use strict;
use warnings;
use utf8;
use Encode;
my $charsetConsole = 'CP932';
my $charsetFile = 'UTF-8';
binmode( STDIN, ":encoding($charsetConsole)" );
binmode( STDOUT, ":encoding($charsetConsole)" );
binmode( STDERR, ":encoding($charsetConsole)" );
@ARGV = map { decode( $charsetConsole, $_ ); } @ARGV;
my $infile = $ARGV[0] or die("usage: splitSqlDump.pl <dump.sql>\n");
my $dirSqls = './sqls/';
my $structuresfile = $dirSqls . '_structures.sql';
mkdir($dirSqls);
unlink <"${dirSqls}*">;
my $regSkip = qr{^\s*(
LOCK\sTABLES\s`[^`]+`\sWRITE|
/\*!40000\sALTER\sTABLE\s`[^`]+`\sDISABLE\sKEYS\s\*/|
/\*!40000\sALTER\sTABLE\s`[^`]+`\sENABLE\sKEYS\s\*/|
UNLOCK\sTABLES
);}x;
my $regInsert = qr{^\s*INSERT\sINTO\s`(?<table>[^`]+)`\sVALUES\s\([\s\S]+\);};
my $regBreak = qr{(VALUES\s|\),)(\()};
open( my $fhIn, "<:raw", encode( $charsetConsole, $infile ) )
or die("$infile: $!");
open( my $fhStructures, ">:raw", encode( $charsetConsole, $structuresfile ) )
or die("$structuresfile: $!");
my $prevTable = '';
my $fhTable = undef;
while ( defined( my $line = <$fhIn> ) ) {
if ( $line =~ $regSkip ) {
next;
} elsif ( $line !~ $regInsert ) {
print $fhStructures $line;
} else {
renewTable($1);
$line =~ s/$regBreak/$1\n\t$2/g;
print $fhTable $line;
}
}
close($fhIn);
close($fhStructures);
renewTable('');
sub renewTable {
my $newTable = shift;
if ( $prevTable eq $newTable ) {
return;
}
if ($fhTable) {
print $fhTable "/*!40000 ALTER TABLE `${prevTable}` ENABLE KEYS */;\n";
print $fhTable "UNLOCK TABLES;\n";
close($fhTable);
}
if ( !$newTable ) {
return;
}
my $tableFile = $dirSqls . $newTable . '.sql';
open( $fhTable, ">:raw", encode( $charsetConsole, $tableFile ) )
or die("$tableFile: $!");
print $fhTable "LOCK TABLES `${newTable}` WRITE;\n";
print $fhTable "/*!40000 ALTER TABLE `${newTable}` DISABLE KEYS */;\n";
$prevTable = $newTable;
}
|
テーブルの修復
テーブルの最適化
データベースのリネーム
注意) MySQL 5.0.37 / ODBC Driver 3.51.12 / Windows の構成では文字化けする。
ODBCドライバの登録
- Connector/ODBC
のWindows MSI版をダウンロード
- インストール (構成は「Typical」でOK)
- 「設定 - コントロールパネル - 管理ツール - データソース(ODBC)」を起動
- 「ユーザーDSN」または「システムDSN」を選択
- 特定のユーザーのみが使用する場合は、「ユーザーDSN」を選択
- 全ユーザーが使用する場合は、「システムDSN」を選択
- 「追加」をクリック
- 「MySQL ODBC x.xx Driver」を選択(x.xxはバージョンナンバー)
- 「完了」をクリック
- 「Login」タブを記入
- 「Data Source Name」は任意の名前でOK
例) MySQL ODBC Connector
- 「Description」は任意。空白も可
- 「Server」にサーバ名またはIPアドレスを記入。
例) mysql1.TakeAsh.net
- 「User」にユーザ名を記入
例) testuser
- 「Password」にパスワードを記入
例) testpass
- 「Test」をクリック
サーバ側の設定が正常にできていれば「Success; connection was made!」と表示される。
エラーダイアログが出た場合は「Diagnostics」をクリックするとエラーメッセージの詳細が出る。
- 「Database」を選択
- 「Advanced」タブを選択しoptionを設定する
Connector/ODBC Connection Parameters
- Microsoft Access、Visual Basic 用推奨設定
- Don't Optimized Column Width にチェックを入れる
- Return Matching Rows にチェックを入れる
- Read Options From my.cnf にチェックを入れる
- 「OK」をクリック
Common SQL Environment (CSE)
インストール
CSE のダウンロード
つみきウェブ
圧縮ファイルを展開し、適当なフォルダに配置する
例) C:\Program Files\CSE
- CSEを実行する
- メニューの「ツール - 設定」を選択
- 「機能」タブで「SQLエクスプローラ」の「ルートフォルダ」を指定する
例) C:\Program Files\CSE\SQL
データベースへの接続
- メニューの「データベース - 接続」を選択
- 「DBMS」は「ODBC汎用」を選択
- 「データソース」はODBCドライバとして登録したものを選択
例) MySQL ODBC Connector
- 「ユーザ名」にユーザ名を記入
例) testuser
- 「パスワード」にパスワードを記入
例) testpass
- 「OK」をクリック
テーブルの全内容を表示
- 「DBエクスプローラ」で、「テーブル」を展開
- 内容を表示したいテーブルの上で右クリックし「全データを開く」を選択
- 「コンソール」に該当テーブルの内容が表示される
テーブルの更新
- 「コンソール」に表示されたテーブルの該当箇所を更新する
- メニューの「データベース - 編集の反映」を選択
- 確認ダイアログの「OK」をクリック
テーブルのエクスポート
- 該当テーブルの上で右クリックし「全データをエクスポート」を選択
- フォルダとファイル名を指定し「保存」をクリック
- CSVファイルが書き出される (Shift_JIS)
データのインポート
- インポートしたいテーブルの上で右クリックし「データをインポート」を選択
- CSVファイルを指定し「開く」をクリック
SQLの実行
- 「新規作成」でスクリプトウィンドウを開く
- SQLを記述する
- メニューの「データベース - 実行」を選択
ODBC/ConnectionString による接続
DRIVER={MySQL ODBC x.xx Driver}; SERVER=サーバ名; DATABASE=データベース名; UID=ユーザ名; PASSWORD=パスワード; OPTION=オプション
例) DRIVER={MySQL ODBC x.xx Driver}; SERVER=mysql1.TakeAsh.net; DATABASE=testdb; UID=testuser; PASSWORD=testpass; OPTION=65539
A5:SQL Mk-2