実践Linux
CentOS8        CentOS8 目次へ  TOP(HOME)へ


MariaDBデータベース          2020年7月



MariaDB 10.3.17-1

●インストール
インストールの確認
# dnf list installed | grep mariadb
mariadb-connector-c.x86_64とmariadb-connector-c-config.noarchしかない。
本体のインストール
# dnf list installed | grep mariadb 確認
# dnf install -y mariadb-server mariadb mariadb-devel

●設定ファイル/etc/my.cnf他
/etc/my.cnf.d以下の設定ファイルがインクルードされる形となっている。

文字コードを設定
/etc/my.cnf.d/mariadb-server.cnfを編集
 [mariadb]セクションに書きこむ。
 character-set-server=utf8mb4

/etc/my.cnf.d/client.cnfを編集
 [client-mariadb]セクションに書きこむ。
 default-character-set=utf8mb4

※ mysqlとmariadbに対応する設定ができるようになっていて、[mariadb]や[client-mariadb]はmariadb専用セクションによるようだ。バージョンによっては、/etc/my.cnf.d/mariadb-server.cnfに集約されていることもあるようだ。

●起動
# systemctl start mariadb.service
# systemctl enable mariadb.service   PC起動時に自動実行

●MariaDBの初期設定
初期セットアップコマンドがあり対話形式に進められる。
rootパスワードを設定するところのみ入力。その他についてはそのままEnterでOK。
# mysql_secure_installation

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none):[enter]
OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.

Set root password? [Y/n][enter]
New password:[パスワード入力]
Re-enter new password:[パスワード入力]
Password updated successfully!
Reloading privilege tables..
... Success!

以下略

●mariaDBサーバーの文字コードを確認(/etc/my.cnf、/etc/my.cnf.d以下の設定ファイル等で変更)
# mysql -u root -p  MariaDBにログイン
> show variables like 'char%';
> exit
character_set_client utf8mb4
character_set_connection utf8mb4
character_set_database utf8mb4
character_set_filesystem binary
character_set_results utf8mb4
character_set_server utf8mb4
character_set_system utf8
character_sets_dir /usr/share/mariadb/charsets/


●firewalldの設定
trustedゾーンに対しては、必要ない。
外部からは、SSH接続。


●ユーザ作成
# mysql -u root -p  MariaDBにログイン

ユーザ一覧を表示するSQL文
> select user,host,user from mysql.user;
MariaDBのユーザはユーザ名@ホスト名がセットとなり一意に識別される。
MariaDB [(none)]> select user,host,user from mysql.user;
+------+-----------+------+
| user | host | user |
+------+-----------+------+
| root | 127.0.0.1 | root |
| root | ::1 | root |
| root | localhost | root |
+------+-----------+------+
3 rows in set (0.00 sec)

データベースmydbに対して全ての権限を持ったユーザmydb@localhost、mydb@"%"(パスワード「12345」)を登録
> grant all privileges on mydb.* to mydb@localhost identified by '12345';
> grant all privileges on mydb.* to mydb@"%" identified by '12345';
> flush privileges;
> exit

削除する場合は、以下のコマンド。権限を先に削除してからユーザを削除。
> revoke all on mydb.* from mydb@localhost;
> revoke all on mydb.* from mydb@"%";
> delete from mysql.user where user like 'mydb' and host like 'localhost';
> delete from mysql.user where user like 'mydb' and host like '%';
> flush privileges;

●データベースを作成
> create database mydb;

確認
> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| mydb |
+--------------------+

データベースの削除(中のテーブルもすべて削除されるので注意)
> drop database mydb;
> exit


●MariaDBのバックアップとリストア
データベース全体をdump.sqlにバックアップ
# mysqldump -u root -p -x --all-databases > dump.sql
password:[rootパスワード入力]
オプション-xは、データベース内のテーブルをすべてロック=バックアップ中のデータの操作を禁止。

特定のデータベース(mydb)を指定してファイルにバックアップ
# mysqldump -u root -p mydb > mydb.dump.sql
password:[rootパスワード入力]

バックアップしたファイルを元にリストアをする
データベース全体をリストア
# mysql -u root -p < dump.sql
password:[rootパスワード入力]

特定のデータベース(mydb)を指定してデータベースをリストア
# mysql -u root -p mydb < mydb.dump.sql
password:[rootパスワード入力]

データベースのリストアでは、既に同じ名前のデータベースがある場合は、CREATE DATABASEはスキップされ、テーブルの削除→作成→データの充填となる。


WindowsのExcel+ADOでデータベースにアクセスする

●MyODBCのインストール(Windoes10)
データベースをExcelから操作するには、データベースとExcelなどのアプリケーションソフトウェアとを結ぶ「ODBCドライバ」が必要。
MySQL専用のODBCドライバをWindowsにインストールする。
https://dev.mysql.com/downloads/より、
Connector/ODBC → 「Microsoft Windows」を選択して、「Go to Download Page」
Windows (x86, 32-bit), MSI Installer 8.0.21 24.5Mをダウンロード(2020/7現在)
インストール
serverは必要なければ、外す。

インストール完了後はコントロールパネルの管理ツールのODBC data sources(32bit)を開く。
システムDSNタブの追加ボタンを押す。
MySQL ODBC 8.0 Unicode Driverを選択し、Data Source Nameを適当に。あとはそのままでかまわない。

●MyODBCのインストール(古い情報)
データベースをExcelから操作するには、データベースと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;"
  ← Driver={MySQL ODBC 5.2 Unicode DRIVER}の部分はインストールしたODBCドライバに合わせる。

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;"  ← Driver={MySQL ODBC 5.2 Unicode DRIVER}の部分はインストールしたODBCドライバに合わせる。

myStr = "SQL文"

myCon.Execute myStr

myCon.Close
Set myCon = Nothing

End Sub

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


TOP(HOME)へ

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

CentOS7-8の新機能(systemdとfirewalld)

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

CentOS7
CentOS7のインストール〜ネットワークの設定ほか
CentOS7の新機能(systemdとfirewalld)
ダイレクトルールを使ったfirewallの強化
DNS(BIND)サーバー
Webサーバー
  Webでファイルの受け渡し
  アクセス解析ツールAwstats
  Wordpressでブログ構築
  EC-CUBEショッピングサイト構築
FTPサーバー
FTPS(FTP over SSL/TLS)
Mail(Dovecot&Postfix)サーバー
Sambaサーバー
MariaDB(MySQL)サーバー
DHCPサーバー
SSHサーバー
VNCサーバー
ストリーミングサーバーRed5
ドメインの追加
PHP7.1をインストール

CentOS5〜6

SELinux

Cプログラミング


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


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