実践Linux
CentOS5/6.5        CentOS5/6.5 目次へ  TOP(HOME)へ


MySQL・データベース(CentOS6.5の場合)   2014年9月





●旧サーバーのMySQLデータベースをバックアップしておく(DB全体のバックアップ)。
 # mysqldump -u root -p -x --all-databases --events > MySQL-dump.sql
 /rootに保存されるので、これをUSBメディアなどにコピーしておく。
 バックアップを復元するには、
 # mysql -u root -p < MySQL-dump.sql

mysqldumpでバックアップを取得すると「-- Warning: Skipping the data of table mysql.event. Specify the --events option explicitly」という警告が出る。これはMySQLのバージョン5.1.8からmysqlデータベースにeventテーブルが追加され、これがデフォルトではバックアップされない設定になっているからで、eventテーブルもバックアップしたい場合は上のように--eventsオプションを付ければよい。

●MySQLをアップデートしておく
 # yum list installed | grep mysql インストール確認
 # yum check-update | grep mysql アップデートできるものを確認
 # yum update mysql 等、アップデート実行

●必要なら、php-mysqlもインストール(phpを使用する場合)
 # yum install php-mysql

●データベースの初期化
 もし初めてMySQLをインストールしたなら、データベースを初期化します。
 (バージョンアップのための再インストール時には、絶対にしないこと。)
 # /usr/bin/mysql_install_db --user=mysql
 /var/lib/mysql以下にデータベースが生成される。(mysqlとtestディレクトリができた。初期でtestという空のデータベースができる。)

 MySQLを最初からやりなおす
 サービスを停止。
 /var/lib/mysql以下のファイルを全て消してしまって、再度初期化。
 これで/var/lib/mysql以下に新しいデータベースが生成し直されて、MySQLが起動できる。

●設定ファイル
/etc/my.cnf(バージョン5.1系)
 [mysqld]
 datadir=/var/lib/mysql
 socket=/var/lib/mysql/mysql.sock
 user=mysql

 symbolic-links=0

 default-character-set=utf8
 ← 追記(デフォルトのサーバ文字コードを指定する。ujis, sjis, utf8等が指定可能)
 skip-character-set-client-handshake
 ← 追記(サーバーの文字コード設定をクライアントでもそのまま使うようにする)

 [mysqld_safe]
 log-error=/var/log/mysqld.log
 pid-file=/var/run/mysqld/mysqld.pid

※注意
MySQL5.5系では、MySQLサーバは「default-character-set」というオプションが廃止されて、「character-set-server」になったようだ。
# default-character-set=utf8 ←ここはコメントアウト
character-set-server=utf8 ←ここを追加


●mysqlサービスを起動

●mysqlのバージョンを知る
 # mysqladmin version  (ここでは、5.1.69だった。)
 rootのパスワードを設定した後は、 # mysqladmin -u root -p version

PCシステムがクラッシュして再起動しても MySQL が起動しないとき
 Another MySQL daemon already running with the same unix socket.というエラー
 /var/lib/mysql/mysql.sock が残っているのが原因。これを削除(または退避)してやる。
 # mv /var/lib/mysql/mysql.sock /var/lib/mysql/mysql.sock.bak
 # service mysqld start


●localhostのrootにパスワードを設定する
 # mysqladmin -u root password '**************'

 root@localhostユーザーからログインできる事を確認
 # mysql -u root -p  (パスワードを設定すると、# mysql -u rootではログインできなくなる)
 mysql> select user,host,password from mysql.user;  ←root@localhostのパスワード設定確認
 mysql> exit  ←MySQLからログアウト

●データベースの作成(バックアップを復元する場合は不要。)
 まず、root でログインし、データベースを作成しておく。
 # mysql -u root -p
 mysql> CREATE DATABASE mydb;
 mysql> SHOW DATABASES;  確認
 mysql> DROP DATABASE mydb; ← データベースmydbの削除(中のテーブルも全て削除されるので注意)
 mysql> exit

●ユーザーの作成 (バックアップを復元する前に行う。)
 # mysql -u root -p ← rootでログイン

 mydbデータベースに全アクセス権を持ったユーザーmydbの作成
 mysql> GRANT ALL PRIVILEGES ON mydb.* TO mydb@localhost IDENTIFIED BY '12345';
 mysql> GRANT ALL PRIVILEGES ON mydb.* TO mydb@"%" IDENTIFIED BY '12345';
 以前は"%"は文字通り「すべてのホスト」だったが、mydb@localhostはmydb@"%"に含まれなくなったようだ=localhost のアクセス許可も与えてやらなければならない。

 GRANTコマンドの構文
 mysql> grant 権限(複数指定可) on DB.テーブル to ユーザー@ホスト名 identified by 'パスワード' with grant option;

 ユーザーを追加したら最後に以下のように、ユーザーテーブルをリフレッシュします。
 mysql> FLUSH PRIVILEGES;

●バックアップを復元する(上でmydbユーザーを作成してから行う。)
 /rootにバックアップファイルMySQL-dump.sqlを置いておく。
 # mysql -u root -p < MySQL-dump.sql

●外部から接続する場合
 ファイアウォールで3306/TCPを開けておく(SSHサーバーを利用するときは、SSHサーバーに対して3306/TCPを開ける。ここでは、自分自身ということになるのであらためて設定する必要はなにもない)。


WindowsのExcel+ADOでMySQLにアクセスする

●MyODBCのインストール
MySQLのデータベースをExcelから操作するには、MySQLとExcelなどのアプリケーションソフトウェアとを結ぶ「ODBCドライバ」が必要。
MySQL専用のODBCドライバをWindowsにインストールする。
http://dev.mysql.com/downloads/より、
MySQL Connectors → Connector/ODBC →
「Microsoft Windows」を選択して、mysql-connector-odbc-5.2.6-win32.msiをダウンロード。
(64bit版だとインストールに失敗した。windows8.1)
実行するとインストールがはじまる。
Setup TypeにはTypical(標準)を選択。

インストール完了後はコントロールパネルの管理ツールのデータソース(ODBC)を起動します。
システムDSNタブの追加ボタンを押します。
MySQL ODBC 5.2 Unicode Driverを選択し、Data Source Nameを適当に。あとはそのままでかまわない。
(MySQL ODBC 5.2 ANSI Driver = shift-jisだと文字化けする)

Windows7
コントロールパネルからデータソースを起動してもMySQLのODBCは表示されない。
この場合は、コントロールパネルから起動せず、\Windows\SysWOW64\にある「odbcad32.exe」を起動する。


データの読み込み(取得型)
Sub データ取込()

Dim myCon As New ADODB.Connection
Dim myRS As New ADODB.Recordset
Dim myStr As String

Set myCon = New ADODB.Connection
myCon.Open "Driver={MySQL ODBC 5.2 Unicode DRIVER}; SERVER=192.168.7.1; PORT=3306; DATABASE=mydb; USER=mydb; PASSWORD=12345;"

myStr = "SQL文;"

Set myRS = New ADODB.Recordset

With myRS
  ActiveConnection = myCon
  Source = myStr
  Open
End With

Cells(10, 1).CopyFromRecordset myRS

myRS.Close
Set myRS = Nothing

myCon.Close
Set myCon = Nothing

End Sub

データの更新や挿入(実行型)
Sub データ登録()

Dim myCon As ADODB.Connection
Dim myStr As String

Set myCon = New ADODB.Connection
myCon.Open "Driver={MySQL ODBC 5.2 Unicode DRIVER}; SERVER=192.168.7.1; PORT=3306; DATABASE=mydb; USER=mydb; PASSWORD=12345;"

myStr = "SQL文"

myCon.Execute myStr

myCon.Close
Set myCon = Nothing

End Sub

サンプルのダウンロードはこちらから

TOP(HOME)へ

目 次
HOME
 全体のシステム構成&目次


RockyLinux

RockyLinux8.4のインストール

旧サーバーからのデータ移行

ネットワークの設定ほか
ダイレクトルールを使ったfirewallの強化
DNS(BIND)サーバー
DHCPサーバー
FTPサーバー
FTPS(FTP over SSL/TLS)
Webサーバー
  アクセス解析ツールAwstats
Mail(Dovecot&Postfix)サーバー
MariaDB(MySQL)サーバー
SSHサーバー
SSHトンネル
SSH+MariaDB+Exel
Sambaサーバー
openVPNサーバー
VNCサーバー(リモートディスクトップ)

systemdとfirewalldについて


CentOS8
CentOS7
CentOS5〜6

SELinux

Cプログラミング


●その他
クラウド Amazon EC2
Raspberry Piで遊ぶ
印刷機関連開発
 刷版絵柄面積率測定
 Indesign上にPDF自動配置
数独をExcelで解く


●趣味の世界
相対性理論
量子力学
群論
熱力学・統計力学
解析力学
物理でつかう数学
超弦理論(ノート作成中)