Symfoware

Symfowareについての考察blog

MariaDB 10.1をAlpine Linuxにインストールする

Alpine LinuxにMariaDB 10.1をインストールしてみます。

Alpine Linux自身のインストールはこちら。
Alpine LinuxをUbuntu KVMにインストールする



MariaDB Serverのインストール



apk searchでMariaDBを検索。


# apk search mariadb
mariadb-bench-10.1.11-r1
mariadb-10.1.11-r1
mariadb-doc-10.1.11-r1
mariadb-libs-10.1.11-r1
mariadb-client-10.1.11-r1
mariadb-dev-10.1.11-r1
acf-mariadb-0.2.0-r1
mariadb-test-10.1.11-r1
mariadb-common-10.1.11-r1




apkでインストールできそうです。


# apk add mariadb
(1/8) Installing mariadb-common (10.1.11-r1)
(2/8) Installing libaio (0.3.110-r0)
(3/8) Installing ncurses-terminfo-base (6.0-r6)
(4/8) Installing ncurses-terminfo (6.0-r6)
(5/8) Installing ncurses-libs (6.0-r6)
(6/8) Installing libgcc (5.3.0-r0)
(7/8) Installing libstdc++ (5.3.0-r0)
(8/8) Installing mariadb (10.1.11-r1)
Executing mariadb-10.1.11-r1.pre-install
Executing busybox-1.24.1-r7.trigger
OK: 415 MiB in 44 packages




起動してみます。


# service mariadb start
* Caching service dependencies ...
* Datadir '/var/lib/mysql' is empty or invalid.
* Run '/etc/init.d/mariadb setup' to create new database.
* ERROR: mariadb failed to start




エラーになりました。
指示通り、「/etc/init.d/mariadb setup」を実行します。


# /etc/init.d/mariadb setup
* Creating a new MySQL database ...
2016-02-20 18:22:46 122864119147944 [Note] /usr/bin/mysqld (mysqld 10.1.11-MariaDB-log) starting as process 2234 ...
2016-02-20 18:22:46 122864119147944 [Note] InnoDB: Using mutexes to ref count buffer pool pages
(略)
2016-02-20 18:22:55 120085801810608 [Note] InnoDB: Dumping buffer pool(s) not yet started

PLEASE REMEMBER TO SET A PASSWORD FOR THE MariaDB root USER !
To do so, start the server, then issue the following commands:

'/usr/bin/mysqladmin' -u root password 'new-password'
'/usr/bin/mysqladmin' -u root -h alpine password 'new-password'

Alternatively you can run:
'/usr/bin/mysql_secure_installation'

which will also give you the option of removing the test
databases and anonymous user created by default. This is
strongly recommended for production servers.

See the MariaDB Knowledgebase at http://mariadb.com/kb or the
MySQL manual for more instructions.

Please report any problems at http://mariadb.org/jira

The latest information about MariaDB is available at http://mariadb.org/.
You can find additional information about the MySQL part at:
http://dev.mysql.com
Support MariaDB development by buying support/new features from MariaDB
Corporation Ab. You can contact us about this at sales@mariadb.com.
Alternatively consider joining our community based development effort:
http://mariadb.com/kb/en/contributing-to-the-mariadb-project/




改めて、MariaDBを起動。


# service mariadb start




接続してみようと、mysqlコマンドを実行すると・・・


# mysql -uroot
-ash: mysql: not found







MariaDB Clientインストール



apk add mariadbでインストールされるのはサーバー機能のみです。
接続クライアントは別途インストールします。


# apk add mariadb-client




これでmysqlコマンドが使えるようになります。


# mysql -uroot
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 3
Server version: 10.1.11-MariaDB-log MariaDB Server

Copyright (c) 2000, 2015, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>




文字コードはデフォルトでutf8が選択されていました。


MariaDB [(none)]> show variables like "chara%";
+--------------------------+----------------------------+
| Variable_name            | Value                     |
+--------------------------+----------------------------+
| character_set_client     | utf8                     |
| character_set_connection | utf8                     |
| character_set_database | utf8                     |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                     |
| character_set_server     | utf8                     |
| character_set_system     | utf8                     |
| character_sets_dir     | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)






接続ユーザーの作成




毎回構文を調べている気がしますが、
ユーザー:admin
パスワード:P@ssw0rd
で接続できるようにしておきました。


GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' IDENTIFIED BY 'P@ssw0rd';
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%' IDENTIFIED BY 'P@ssw0rd';




これで別端末からも接続できるようになっているはずです。


テーマ:サーバ - ジャンル:コンピュータ

  1. 2016/02/20(土) 18:44:23|
  2. MySQL
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集

Debian 8にMariaDB 10.1をインストールし、外部接続を許可する

Debian 8にMariaDB 10.1をインストールした時のメモです。


インストール



こちらの手順に従いました。
Downloads


必要なソフトをインストール。
aptのキーを追加し、MariaDBのリポジトリを追加します。


# apt-get install software-properties-common
# apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xcbcb082a1bb943db
# add-apt-repository 'deb [arch=amd64,i386] http://ftp.yz.yamagata-u.ac.jp/pub/dbms/mariadb/repo/10.1/debian jessie main'




ソースリストを更新。
MariaDBのインストールを実行します。


# apt-get update
# apt-get install mariadb-server




途中、パスワードの入力を求められるので、適当な値を入力します。

662_01.png

662_02.png


mysqlコマンドで接続してみます。


# mysql -uroot -p[設定したパスワード]
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 3
Server version: 10.1.11-MariaDB-1~jessie-log mariadb.org binary distribution

Copyright (c) 2000, 2015, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>




10.1.11がインストール出来ました。




文字コードの変更



文字コードを確認してみます。


MariaDB [(none)]> show variables like "char%";
+--------------------------+----------------------------+
| Variable_name            | Value                     |
+--------------------------+----------------------------+
| character_set_client     | utf8                     |
| character_set_connection | utf8                     |
| character_set_database | latin1                     |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                     |
| character_set_server     | latin1                     |
| character_set_system     | utf8                     |
| character_sets_dir     | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)




databaseとserverの文字コードがlatin1です。
my.cnfを編集して、utf-8に変更しておきます。


# vi /etc/mysql/my.cnf




mysqldの項目に「character-set-server=utf8」の記載を追記。


[mysqld]
#
# * Basic Settings
#
user            = mysql
pid-file        = /var/run/mysqld/mysqld.pid
socket         = /var/run/mysqld/mysqld.sock
port            = 3306
basedir         = /usr
datadir         = /var/lib/mysql
tmpdir         = /tmp
lc_messages_dir = /usr/share/mysql
lc_messages     = en_US
skip-external-locking
character-set-server=utf8




編集がおわったら、mysqlを再起動。


# service mysql restart




ちゃんと文字コードが変更されました。


MariaDB [(none)]> show variables like "char%";
+--------------------------+----------------------------+
| Variable_name            | Value                     |
+--------------------------+----------------------------+
| character_set_client     | utf8                     |
| character_set_connection | utf8                     |
| character_set_database | utf8                     |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                     |
| character_set_server     | utf8                     |
| character_set_system     | utf8                     |
| character_sets_dir     | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)







外部接続許可



このサーバーに外部から接続できるよう構成します。
my.cnfを編集。


# vi /etc/mysql/my.cnf



「bind-address」を「127.0.0.1」から「0.0.0.0」(全てのアドレスを待ち受け)に変更。


[mysqld]
#
# * Basic Settings
#
user            = mysql
pid-file        = /var/run/mysqld/mysqld.pid
socket         = /var/run/mysqld/mysqld.sock
port            = 3306
basedir         = /usr
datadir         = /var/lib/mysql
tmpdir         = /tmp
lc_messages_dir = /usr/share/mysql
lc_messages     = en_US
skip-external-locking
character-set-server=utf8
#
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
#bind-address            = 127.0.0.1
bind-address            = 0.0.0.0




編集が終わったら、MariaDBを再起動。


# service mysql restart




ユーザー名「admin」、パスワード「P@ssw0rd」のユーザーを作成し、
外部からの接続を許可します。

データベースに接続し、以下のクエリーを事項。


grant all privileges on *.* to admin@'%' identified by 'P@ssw0rd' with grant option;





作成したユーザーで接続出来ました。
sampleデータベースを作成してみます。


# mysql -uadmin -pP@ssw0rd
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 16
Server version: 10.1.11-MariaDB-1~jessie-log mariadb.org binary distribution

Copyright (c) 2000, 2015, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> create database sample;
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]>




別の端末から、こんなPythonスクリプトで接続を確認しました。


  1. # -*- coding:utf-8 -*-
  2. import MySQLdb
  3. con = MySQLdb.connect(
  4.     host='192.168.1.101',
  5.     db='sample',
  6.     user='admin',
  7.     passwd='P@ssw0rd',
  8.     charset='utf8')
  9. cur = con.cursor()
  10. cur.close()
  11. con.close()






テーマ:サーバ - ジャンル:コンピュータ

  1. 2016/02/07(日) 17:49:13|
  2. MySQL
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集

FreeBSD 10.2にMySQL 5.6をインストール&外部接続許可

FreeBSD 10.2にMySQL 5.6をインストールした時のメモです。


インストールと起動



pkgコマンドでインストールしました。


# pkg install mysql56-server




起動を行う前に、/etc/rc.confに1行追記します。


# vi /etc/rc.conf




内容は以下の1行。


mysql_enable="YES"




これを記載していないと、起動時こんなエラーメッセージが表示されます。


Cannot 'start' mysql. Set mysql_enable to YES in /etc/rc.conf or use 'onestart' instead of 'start'.




追記が終わったら、MySQLを起動。


# /usr/local/etc/rc.d/mysql-server start




ユーザー:root、パスワード無しで接続できます。


# mysql -uroot
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.6.24 Source distribution

Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>







文字コードの設定



文字コードにutf-8を使用するようにします。
現在の文字コードは「show variables like "chara%";」で確認できます。

初期状態は以下のとおり。


mysql> show variables like "chara%";
+--------------------------+----------------------------------+
| Variable_name            | Value                            |
+--------------------------+----------------------------------+
| character_set_client     | latin1                         |
| character_set_connection | latin1                         |
| character_set_database | latin1                         |
| character_set_filesystem | binary                         |
| character_set_results    | latin1                         |
| character_set_server     | latin1                         |
| character_set_system     | utf8                             |
| character_sets_dir     | /usr/local/share/mysql/charsets/ |
+--------------------------+----------------------------------+
8 rows in set (0.00 sec)




/usr/local/my.cnfを編集。


# vi /usr/local/my.cnf




赤字の部分を追記しました。
[client]はセクションごと追加します。


[mysqld]
...
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
character-set-server=utf8
skip-character-set-client-handshak

[client]
default-character-set=utf8




MySQLを再起動。


# /usr/local/etc/rc.d/mysql-server restart




utf-8に変更できました。


mysql> show variables like "chara%";
+--------------------------+----------------------------------+
| Variable_name            | Value                            |
+--------------------------+----------------------------------+
| character_set_client     | utf8                             |
| character_set_connection | utf8                             |
| character_set_database | utf8                             |
| character_set_filesystem | binary                         |
| character_set_results    | utf8                             |
| character_set_server     | utf8                             |
| character_set_system     | utf8                             |
| character_sets_dir     | /usr/local/share/mysql/charsets/ |
+--------------------------+----------------------------------+
8 rows in set (0.00 sec)








ユーザーの作成と外部接続許可



adminというユーザーを作成し、外部からの接続を許可してみます。
以前書いた記事を参考にしました。
MariaDB 5.5の外部接続許可

ユーザー「admin」をパスワード「P@ssw0rd」で作成。
外部からの接続を受け入れます。


mysql> grant all privileges on *.* to admin@'%' identified by 'P@ssw0rd' with grant option;
Query OK, 0 rows affected (0.00 sec)

mysql>




接続してテスト用のデータベース、テーブルを作りました。


# mysql -uroot

mysql> create database sample;
mysql> use sample
Database changed

mysql> create table test (id int, name varchar(100));
mysql> insert into test (id,name) values (1, 'test1');
mysql> insert into test (id,name) values (2, 'test2');




別の端末から適当に作成したPythonプログラムでデータを読み取ってみます。


  1. # -*- coding:utf-8 -*-
  2. import pymysql
  3. con = pymysql.connect(host='192.168.1.102',
  4.                      user='admin',
  5.                      password='P@ssw0rd',
  6.                      db='sample',
  7.                      charset='utf8mb4',
  8.                      cursorclass=pymysql.cursors.DictCursor)
  9. cur = con.cursor()
  10. cur.execute('select * from test')
  11. for row in cur:
  12.     print row['id'], row['name']
  13. cur.close()
  14. con.close()




ちゃんと接続できていますね。


$ python sample.py
1 test1
2 test2


テーマ:サーバ - ジャンル:コンピュータ

  1. 2015/10/04(日) 18:16:37|
  2. MySQL
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集

MariaDB 10にJDBCドライバ(MariaDB Connector/J 1.1.9)で接続する

今まで、JavaからMariaDBに接続するときは、MySQLのJDBCドライバを
使用していました。

調べてみると、MariaDB用のJDBCドライバがあるようです。
https://mariadb.com/kb/en/mariadb/about-mariadb-connector-j/

622_01.png

使ってみます。



ドライバのビルド



ソースからビルドしてみました。

Javaはインストールしていたのですが、gitとmavenが
なかったのでインストール。


$ sudo apt-get install git maven2




gitからソースを持ってきてビルドします。


$ git clone https://github.com/MariaDB/mariadb-connector-j.git
$ cd mariadb-connector-j/
$ mvn -Dmaven.test.skip=true package



targetフォルダに「mariadb-java-client-1.1.9.jar」が出来上がりました。
これをビルドパスに含めておきます。




接続テスト



MariaDB 5.5の外部接続許可

こちらを参考に外部から接続できるようにしておきます。


# mysql -uroot
MariaDB [(none)]> grant all privileges on *.* to admin@'%' identified by 'P@ssw0rd' with grant option;




サンプルはこんなかんじです。


  1. package sample;
  2. import java.sql.Connection;
  3. import java.sql.DriverManager;
  4. import java.sql.ResultSet;
  5. import java.sql.Statement;
  6. public class MainProcess {
  7.     
  8.     public static void main(String[] args) throws Exception {
  9.         
  10.         //接続
  11.         String url = "jdbc:mariadb://192.168.1.103:3306/sample";
  12.         Connection con = DriverManager.getConnection(url, "admin", "P@ssw0rd");
  13.         
  14.         Statement stmt = con.createStatement();
  15.         // テーブル作成
  16.         stmt.execute("CREATE TABLE IF NOT EXISTS test (id int, name varchar(10))");
  17.         stmt.execute("INSERT INTO test (id, name) values (1, '日本語テスト')");
  18.         
  19.         ResultSet rs = stmt.executeQuery("SELECT * FROM test");
  20.         
  21.         while(rs.next()) {
  22.             System.out.println(rs.getString("name"));
  23.         }
  24.         rs.close();
  25.         
  26.         stmt.close();
  27.         
  28.         con.commit();
  29.         con.close();
  30.     }
  31.     
  32. }




実行結果


日本語テスト




ちゃんと動いてくれました。

テーマ:サーバ - ジャンル:コンピュータ

  1. 2015/07/05(日) 17:55:52|
  2. MySQL
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集

FreeBSD 10.0にMariaDB 10をインストールする(pkg install使用)

MariaDB 10をFreeBSDにインストールしてみます。
5.5は以前インストールしたことがあるので、こちらの手順を参考にします。
FreeBSD 10.0にMariaDBをインストールする(pkg install使用)


※2017/3/20追記

FreeBSD 11.0 + MariaDB 10.1のインストールはこちら。
FreeBSD 11.0にMariaDB 10.1をインストールし外部接続を許可する(pkg使用)



インストール



pkg searchしてみた結果、pkg installで10がインストールできるようになっていました。


# pkg search mariadb
mariadb100-client-10.0.17
mariadb100-server-10.0.17
mariadb53-client-5.3.12_6
mariadb53-scripts-5.3.12_6
mariadb53-server-5.3.12_6
mariadb55-client-5.5.41
mariadb55-server-5.5.41




以下のコマンドでインストール。


# pkg install mariadb100-server





/etc/rc.confを編集。


# vi /etc/rc.conf



以下の行を追記。


mysql_enable="YES"




起動します。


# /usr/local/etc/rc.d/mysql-server start







文字コードの変更



ユーザー:root、パスワード無しで接続できます。


# mysql -uroot
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 2
Server version: 10.0.17-MariaDB FreeBSD Ports

Copyright (c) 2000, 2015, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>




charsetを調べてみると、latin1が混ざっているようですね。


MariaDB [(none)]> show variables like "char%";
+--------------------------+----------------------------------+
| Variable_name            | Value                            |
+--------------------------+----------------------------------+
| character_set_client     | utf8                             |
| character_set_connection | utf8                             |
| character_set_database | latin1                         |
| character_set_filesystem | binary                         |
| character_set_results    | utf8                             |
| character_set_server     | latin1                         |
| character_set_system     | utf8                             |
| character_sets_dir     | /usr/local/share/mysql/charsets/ |
+--------------------------+----------------------------------+
8 rows in set (0.00 sec)




/usr/local/share/mysql/my-large.cnfを/usr/local/etc/my.cnfにコピー。
編集します。


# cp /usr/local/share/mysql/my-large.cnf /usr/local/etc/my.cnf
# vi /usr/local/etc/my.cnf



赤字が追記箇所です。


[client]
#password     = your_password
port            = 3306
socket         = /tmp/mysql.sock
default-character-set=utf8
# Here follows entries for some specific programs

# The MariaDB server
[mysqld]
port            = 3306
socket         = /tmp/mysql.sock
character-set-server=utf8
skip-character-set-client-handshake
skip-external-locking
key_buffer_size = 256M
max_allowed_packet = 1M
table_open_cache = 256
sort_buffer_size = 1M
read_buffer_size = 1M
read_rnd_buffer_size = 4M




ファイルへの追記が終わったらMariaDBを再起動。


# /usr/local/etc/rc.d/mysql-server restart




狙い通り、反映されましたね。


MariaDB [(none)]> show variables like "char%";
+--------------------------+----------------------------------+
| Variable_name            | Value                            |
+--------------------------+----------------------------------+
| character_set_client     | utf8                             |
| character_set_connection | utf8                             |
| character_set_database | utf8                             |
| character_set_filesystem | binary                         |
| character_set_results    | utf8                             |
| character_set_server     | utf8                             |
| character_set_system     | utf8                             |
| character_sets_dir     | /usr/local/share/mysql/charsets/ |
+--------------------------+----------------------------------+
8 rows in set (0.01 sec)





今後のテスト用にsampleデータベースを作成してみました。


MariaDB [(none)]> create database sample;
Query OK, 1 row affected (0.00 sec)



テーマ:サーバ - ジャンル:コンピュータ

  1. 2015/07/05(日) 17:32:49|
  2. MySQL
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集
前のページ 次のページ