此篇筆記參考官方文件與個人實測所撰寫,安裝當下的 MariaDB 版本為 10.9。
從原始碼安裝 MariaDB
$ sudo apt install -y build-essential bison
$ sudo apt build-dep mariadb-server
此時你可能會遇到以下錯誤:
E: You must put some 'source' URIs in your sources.list
解決方法為開啟 software-properties-gtk
:
$ sudo software-properties-gtk
勾選 Source code
選項。
接下來再次執行 apt build-dep mariadb-server
即可。
安裝完套件後,到 github 下載原始碼編譯:
git clone https://github.com/MariaDB/server.git mariadb
cd mariadb
cmake . -DBUILD_CONFIG=mysql_release && make -j8
安裝 mariaDB:
$ sudo make install
在終端機查看安裝訊息,應該會發現必要檔案都被複製到 /usr/local/mysql
(在其他 distro 可能有所不同),至此我們透過原始碼安裝完 MariaDB server。
執行 MariaDB
找到 mysqld
執行檔的位置(我的在 /usr/local/mysql/bin/mysqld
),執行時手動指定 datadir
:
$ mkdir data
$ /usr/local/mysql/bin/mysqld --datadir=./data
另一種啟動方法是透過 systemctl
以 root
或指定 user 啟動,但我也還在摸索中,以後弄清楚怎麼用再分享。
成功執行之後,第一行和最後一行訊息如下:
2022-04-16 1:29:18 0 [Note] /usr/local/mysql/bin/mysqld (server 10.9.0-MariaDB) starting as process 110416 ...
...
Version: '10.9.0-MariaDB' socket: '/tmp/mysql.sock' port: 3306 MariaDB Server
這兩個訊息特別重要,第一個訊息是當要停止伺服器時,透過 kill 110416
可以安全的關閉伺服器,mariadb。最後一個訊息的 /tmp/mysql.sock
是 client 連到 MariaDB 時需要用到。
測試 MariaDB
首先安裝 mysql
:
$ sudo apt install mariadb-client-core-10.3
連上 MariaDB:
$ mysql --socket=/tmp/mysql.sock
參考 MariaDB Basics 建個簡單的資料庫:
1
2
CREATE DATABASE bookstore;
USE bookstore;
1
2
3
4
5
6
7
CREATE TABLE books (
isbn CHAR(20) PRIMARY KEY,
title VARCHAR(50),
author_id INT,
publisher_id INT,
year_pub CHAR(4),
description TEXT );
1
2
3
4
5
CREATE TABLE authors
(author_id INT AUTO_INCREMENT PRIMARY KEY,
name_last VARCHAR(50),
name_first VARCHAR(50),
country VARCHAR(50) );
1
2
3
INSERT INTO authors
(name_last, name_first, country)
VALUES('Kafka', 'Franz', 'Czech Republic');
1
2
3
4
5
6
INSERT INTO books
(title, author_id, isbn, year_pub)
VALUES('The Castle', '1', '0805211063', '1998'),
('The Trial', '1', '0805210407', '1995'),
('The Metamorphosis', '1', '0553213695', '1995'),
('America', '1', '0805210644', '1995');
接下來讀取資料庫:
1
SELECT title FROM books;
1
2
3
SELECT title, name_last
FROM books
JOIN authors USING (author_id);
參考資料
Get, Build and Test Latest MariaDB the Lazy Way
Error :: You must put some ‘source’ URIs in your sources.list