在 Linux(Ubuntu) 安裝 Mysql 以及示範透過 JAVA 連接

Chia-Yi Yeh
9 min readSep 20, 2021

--

Photo by Caspar Camille Rubin on Unsplash

安裝 Mysql

可以直接參考官方安裝教學文件,或是跟著以下內容,直接一步步示範如何安裝。

1. Repository list 新增 MySQL APT Repository

首先到這個連結下載檔案。
若看到下方這個畫面時可以直接點選畫面下方 “No thanks, just start my download.” 直接進行下載。

另一種方式是直接在命令視窗利用wget 下載網址直接進行下載。目前(2021/09/20)最新版本的下載連結為 https://dev.mysql.com/get/mysql-apt-config_0.8.19-1_all.deb

~$ wget https://dev.mysql.com/get/mysql-apt-config_0.8.19-1_all.deb

下載完後進行安裝套件,途中跳出的視窗可以直接選擇OK

~$ sudo dpkg -i ./mysql-apt-config_0.8.19-1_all.deb
~$ sudo apt-get update #更新一下

2. 下載 Mysql

~$ sudo apt install mysql-server

3. 啟動 Mysql

~$ sudo service mysql status # mysql 的運作狀態
~$ sudo service mysql start # 啟動 mysql
~$ sudo service mysql status

另外停止以及重啟的指令是

~$ sudo service mysql stop # 停止 mysql 
~$ sudo service mysql restart # 重啟 mysql

注意,若你發現在執行service mysql status時,你的命令視窗提示錯誤並說:

mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'debian-sys-maint'@'localhost' (using password: YES)'

代表目前帳號:debian-sys-maint的密碼(記錄於 /etc/mysql/debian.cnf )與現行mysql的密碼不一致或是有其他原因。這時候可以更改(或不更改) /etc/mysql/debian.cnf 所記錄的密碼並同步更新mysql的密碼。
單純更新mysql密碼的方法如下:

~$ sudo cat /etc/mysql/debian.cnf # 先查詢debian.cnf中的密碼並記錄下來
# Automatically generated for Debian scripts. DO NOT TOUCH!
[client]
host = localhost
user = debian-sys-maint
password = [你的密碼]
socket = /var/run/mysqld/mysqld.sock
[mysql_upgrade]
host = localhost
user = debian-sys-maint
password = [你的密碼]
socket = /var/run/mysqld/mysqld.sock
~$ sudo su
~$ mysql
mysql> SET PASSWORD FOR 'debian-sys-maint'@'localhost' = '[你的密碼]'; # 設成剛剛查詢的密碼
mysql> exit

若設定的密碼不給過,可以修改目前的密碼政策:

mysql> SHOW VARIABLES LIKE 'validate_password%';
+--------------------------------------+--------+
| Variable_name | Value |
+--------------------------------------+--------+
| validate_password.check_user_name | ON |
| validate_password.dictionary_file | |
| validate_password.length | 8 |
| validate_password.mixed_case_count | 1 |
| validate_password.number_count | 1 |
| validate_password.policy | MEDIUM |
| validate_password.special_char_count | 1 |
+--------------------------------------+--------+
mysql> SET GLOBAL validate_password.policy = LOW;
mysql> SET GLOBAL validate_password.length = 4;
mysql> SET GLOBAL validate_password.number_count = 0;
mysql> SET GLOBAL validate_password.mixed_case_count = 0;
mysql> SET GLOBAL validate_password.special_char_count = 0;
mysql> SET GLOBAL validate_password.check_user_name = OFF;

然後再設定一次密碼。
降低密碼政策等級似乎挺不安全,不過只要restart mysql後,就會恢復原本的設定了。
先別急著執行service mysql restart等下還要示範創造一個測試用帳號,以及懶人密碼。

4. 登入 Mysql

首先新增一個測試用資料庫以及使用者。

~$ sudo su #登入root後可以直接進入mysql
~# mysql
mysql> CREATE DATABASE TEST; #新增資料庫 TEST
mysql> CREATE USER 'test'@'localhost' IDENTIFIED BY 'test'; \
#新增帳號密碼,CREATE USER '[使用者名稱]'@'localhost' IDENTIFIED BY '[使用者密碼]',這裡設定的是一個方便記住的名稱與密碼
mysql> GRANT ALL PRIVILEGES ON TEST.* TO 'test'@'localhost';# 將TEST所有權限交給test
mysql> exit # 退出 mysql
~# exit # 退出root
~$ mysql -u test -p TEST # mysql -u [使用者名稱] -p [資料庫名稱]

如果發現密碼的設定不給過,可以看一下上面所提到的修改密碼政策。

5. 創造 TABLE 與輸入資料

現在來增加一些資料,等會使用JAVA查詢。
創造 TABLE:

mysql> CREATE TABLE IF NOT EXISTS `PRODUCT`(
`PRODUCT_ID` INT NOT NULL,
`PRODUCT_NAME` VARCHAR(100) NOT NULL,
`PRODUCT_PRICE` DECIMAL(10,2) NOT NULL,
PRIMARY KEY ( `PRODUCT_ID` )
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

新增資料:

mysql> INSERT INTO PRODUCT
VALUES
(1,'歷史課本',100),
(2,'ChromeBook',5000),
(3,'マックブック',3000.99);
mysql> SELECT * FROM PRODUCT;
+------------+--------------------+---------------+
| PRODUCT_ID | PRODUCT_NAME | PRODUCT_PRICE |
+------------+--------------------+---------------+
| 1 | 歷史課本 | 100.00 |
| 2 | ChromeBook | 5000.00 |
| 3 | マックブック | 3000.99 |
+------------+--------------------+---------------+

下載 JDBC Driver for MySQL (Connector/J)

下載網址選擇符合自己的系統及版本去下載。

~$ wget [你的版本連結] 
~$ sudo apt install ./mysql-connector-java_8.0.26-1ubuntu20.04_all.deb # 請替換成你的檔案名稱
~$ ls /usr/share/java/ # 安裝好後,mysql-connector-java-X.X.XX.jar 檔的位置

JAVA 連接 Mysql 示範

MysqlConnection.java

import java.sql.*;public class MysqlConnection {
public static void main(String args[]) {
try (Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/TEST", "test", "test");) {
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM PRODUCT;");
while (rs.next()) {
System.out.println(rs.getInt(1) + " " + rs.getString(2) + " " + rs.getBigDecimal(3));
}
} catch (Exception e) {
System.out.println(e);
}
}
}

記得將 mysql-connector-java-X.X.XX.jar 檔路徑放入 CLASSPATH 或 PROJECT 的 Library 路徑裡,以 VSCODE 為例,在 Referenced Libraries 增加 mysql-connector-java-X.X.XX.jar。

執行完後應該會輸出如下結果:

1 歷史課本 100.00
2 ChromeBook 5000.00
3 マックブック 3000.99

--

--