Jinsi ya Kusanidi MariaDB kwenye Ubuntu (20.04 / 22.04 / 24.04) – Mwongozo Kamili wa Usanidi na Usalama

目次

Njia ya Haraka ya Kusanidi MariaDB kwenye Ubuntu (20.04 / 22.04 / 24.04 Inayoungwa mkono)

Ikiwa unataka kuanza kutumia MariaDB kwenye Ubuntu mara moja, fuata tu hatua zilizo hapa chini kukamilisha usakinishaji na uthibitisho wa kuanzisha. Isipokuwa una sababu maalum, kusanidi kutoka kwenye hazina ya chaguo-msingi ya Ubuntu ndicho chaguo salama na thabiti zaidi.

① Sasisha Taarifa za Paketi

sudo apt update
sudo apt upgrade -y

② Sakinisha MariaDB

sudo apt install -y mariadb-server mariadb-client

Hakuna usanidi maalum unaohitajika wakati wa usakinishaji. Baada ya kukamilika, huduma ya MariaDB itaanza kiotomatiki.

③ Thibitisha MariaDB Inayotumika

sudo systemctl status mariadb

Kama active (running) inaonyeshwa, MariaDB inafanya kazi ipasavyo.

④ Washa Kuanzisha Kiotomatiki (Kwa Muda Haijalishi Lakini Inapendekezwa Kuthibitisha)

sudo systemctl enable mariadb

⑤ Unganisha kwa MariaDB na Thibitisha Uendeshaji

sudo mysql

Kama unaona mwaliko ufuatao, usakinishaji umekamilika kwa mafanikio:

MariaDB [(none)]>

Kuondoka, andika exit;.

Uanzishaji wa Usalama wa Lazima Baada ya Usakinishaji

Mara tu baada ya usakinishaji, MariaDB ina mipangilio ya usalama ya chini tu. Hakikisha uendesha amri ifuatayo:

sudo mysql_secure_installation

Kwa ujumla, majibu yafuatayo yanapendekezwa:

  • Ondoa watumiaji wasiojulikana → Y
  • Kataa kuingia kwa root kutoka mbali → Y
  • Ondoa hifadhidata ya majaribio → Y
  • Pakia upya jedwali la ruhusa → Y

Hii inamaliza usanidi wa mazingira salama ya MariaDB kwenye Ubuntu.

Toleo la MariaDB Lililosakinishwa na Toleo la Ubuntu

  • Ubuntu 20.04 → Mfululizo wa MariaDB 10.3
  • Ubuntu 22.04 → Mfululizo wa MariaDB 10.6
  • Ubuntu 24.04 → Mfululizo wa MariaDB 10.11 (LTS)

Kwa watumiaji wengi, toleo la chaguo-msingi la Ubuntu linatosha. Fikiria hazina rasmi tu ikiwa unahitaji vipengele vipya zaidi.

Ukaguzi wa Haraka Ikiwa Usakinishaji Unashindwa au Huduma Haisitaki

  • Angalia makosa kwa sudo systemctl status mariadb
  • Angalia logi za kina kwa sudo journalctl -xe
  • Angalia nafasi ya diski kwa df -h

Katika hali nyingi, tatizo ni ama nafasi ya diski isiyotosha au hitilafu ndogo katika faili la usanidi.

Kuchagua Toleo Sahihi la MariaDB kwa Toleo la Ubuntu Lako

Unapotumia MariaDB kwenye Ubuntu, chaguo salama zaidi katika hali nyingi ni toleo la hazina ya chaguo-msingi. Masasisho ya usalama na ulinganifu wa utegemezi husimamiwa kiotomatiki, na hivyo ni bora kwa watumiaji wapya na wa kati.

Toleo la Hazina ya Chaguo-msingi ya Ubuntu (Inapendekezwa)

  • Ubuntu 20.04 → Mfululizo wa MariaDB 10.3
  • Ubuntu 22.04 → Mfululizo wa MariaDB 10.6
  • Ubuntu 24.04 → Mfululizo wa MariaDB 10.11 (LTS)

Isipokuwa una mahitaji maalum, matoleo haya ni ya kiutendaji kabisa kwa matumizi ya uzalishaji.

Ikiwa Unahitaji Toleo la Hivi Karibuni (Ongeza Hazina ya MariaDB Rasmi)

Ikiwa unahitaji vipengele vipya zaidi, unaweza kuongeza hazina ya MariaDB rasmi. Kwa kuwa apt-key imeachwa, hii inatumia njia ya signed-by.

① Hifadhi Ufunguo wa GPG

sudo mkdir -p /etc/apt/keyrings
sudo curl -fsSL https://mariadb.org/mariadb_release_signing_key.asc \
  | sudo gpg --dearmor -o /etc/apt/keyrings/mariadb.gpg

② Angalia Jina la Msimbo la Ubuntu Yako

lsb_release -cs

Mifano:

  • 20.04 → focal
  • 22.04 → jammy
  • 24.04 → noble

③ Ongeza Hazina Rasmi (Mfano: Mfululizo wa 10.11)

echo "deb [signed-by=/etc/apt/keyrings/mariadb.gpg] \
https://mirror.mariadb.org/repo/10.11/ubuntu \
$(lsb_release -cs) main" \
| sudo tee /etc/apt/sources.list.d/mariadb.list

④ Sasisha Paketi na Sakinisha

sudo apt update
sudo apt install mariadb-server mariadb-client

Vidokezo Unapotumia Hazina Rasmi

  • Unaweza kutumia vipengele vipya zaidi kuliko toleo la chaguo-msingi la Ubuntu
  • Kuna hatari ya baadaye ya migogoro ya utegemezi
  • Majaribio ya kina yanahitajika kwa seva za uzalishaji

Kwa uzalishaji, amua wazi ikiwa unathamini uthabiti au vipengele vipya zaidi.

Jinsi ya Kuthibitisha Toleo la MariaDB Lililowekwa Kwa Sasa

mysql --version

Mfano:

mysql  Ver 15.1 Distrib 10.6.16-MariaDB

Kwa kuthibitisha toleo waziwazi, utatuzi wa matatizo na kazi za uhamisho huwa rahisi sana.

Mwongozo Kamili wa Usanidi wa Usalama wa Awali wa MariaDB (mysql_secure_installation)

Mara tu baada ya kusakinisha MariaDB, mipangilio ya usalama ya msingi tu inatumiwa. Ili kufanya kazi kwa usalama, hakikisha kuendesha amri ifuatayo:

sudo mysql_secure_installation

Ukishafanya, maswali kadhaa yataonekana. Katika hali nyingi, majibu yafuatayo yanapendekezwa.

Majibu Yanayopendekezwa

  • Weka nenosiri la sasa la root: → Bonyeza Enter (halijapangwa katika uendeshaji wa kwanza)
  • Badilisha kwa uthibitishaji wa unix_socket? → Y (Inapendekezwa kwenye Ubuntu)
  • Badilisha nenosiri la root? → N (Kama unatumia uthibitishaji wa unix_socket)
  • Ondoa watumiaji wasiojulikana? → Y
  • Zuia kuingia kwa root kutoka mbali? → Y
  • Ondoa hifadhidata ya majaribio na ufikiaji wake? → Y
  • Pakiza tena jedwali la ruhusa sasa? → Y

Hii inamaliza usanidi wa msingi wa usalama.

Kwa Nini Huwezi Kuingia kama root (Access Denied Error)

Kwenye Ubuntu, mtumiaji root hutumia uthibitishaji wa unix_socket kwa chaguo-msingi. Kwa hiyo, kuingia kwa kutumia nenosiri la kawaida hakutafanya kazi.

Dalili ya Mfano

mysql -u root -p

Access denied for user 'root'@'localhost'

Njia Sahihi ya Kuingia (Chaguo-msingi cha Ubuntu)

sudo mysql

Hii ndiyo njia salama zaidi na inayopendekezwa.

Jinsi ya Kubadilisha root kwa Uthibitishaji wa Nenosiri (Kama Inahitajika Tu)

Badilisha njia ya uthibitishaji tu ikiwa lazima uungane kama root kutoka kwa zana au programu za nje.

① Unganisha kwa MariaDB

sudo mysql

② Badilisha Plugin ya Uthibitishaji

ALTER USER 'root'@'localhost'
IDENTIFIED WITH mysql_native_password
BY 'StrongPasswordHere';

FLUSH PRIVILEGES;

③ Thibitisha Mabadiliko

SELECT user, host, plugin FROM mysql.user;

Kama mysql_native_password inaonyeshwa, mabadiliko yamefanikiwa.

Jinsi ya Kuthibitisha Njia ya Uthibitishaji ya Sasa

sudo mysql -e "SELECT user, host, plugin FROM mysql.user;"

Njia kuu za uthibitishaji:

  • unix_socket → Chaguo-msingi cha Ubuntu, salama
  • mysql_native_password → Uthibitishaji wa kulingana na nenosiri

Isipokuwa kuna sababu maalum, ni salama zaidi kuweka root ikitumia uthibitishaji wa unix_socket.

Makosa ya Kawaida na Suluhisho

KOSA 1698 (28000): Access denied for user ‘root’@’localhost’

  • Sababu: Kujaribu kuingia kwa kutumia nenosiri
  • Suluhisho: Ingia kwa kutumia sudo mysql

mysql_secure_installation Haipatikani

  • Angalia kwa which mysql_secure_installation
  • Ikiwa haijasakinishwa, endesha sudo apt install mariadb-server

Weka Usimbaji wa Herufi kuwa utf8mb4 (Kuzuia Maandishi Yaliyopindika)

Ili kushughulikia maandishi ya lugha nyingi na emoji kwa usalama katika MariaDB, inapendekezwa kutumia utf8mb4. Bila mpangilio huu, unaweza kukutana na matatizo ya usimbaji au upotevu wa data.

① Hariri Faili la Usanidi

sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf

Ongeza au badilisha mistari ifuatayo katika sehemu ya [mysqld]:

[mysqld]
character-set-server = utf8mb4
collation-server     = utf8mb4_general_ci

② Anzisha upya MariaDB

sudo systemctl restart mariadb

③ Thibitisha Mipangilio

sudo mysql -e "SHOW VARIABLES LIKE 'character_set%';"

Kama utf8mb4 inaonyeshwa, usanidi umefanikiwa.

Bainisha utf8mb4 Unapounda Hifadhidata (Inapendekezwa)

Kama unataka kufafanua seti ya herufi waziwazi bila kujali mipangilio ya kimataifa, bainisha wakati wa kuunda hifadhidata.

CREATE DATABASE sample_db
CHARACTER SET utf8mb4
COLLATE utf8mb4_general_ci;

Jedwali zote zitolewe ndani ya hifadhidata hii zitaurithi utf8mb4.

Unda Mtumiaji wa Programu na Mpe Ruhusa

Katika mazingira ya uzalishaji, kamwe usitumie mtumiaji root kwa miunganisho ya programu. Unda mtumiaji maalum na mpe ruhusa ndogo tu zinazohitajika.

① Ingia kwenye MariaDB

sudo mysql

② Tengeneza Mtumiaji (Muunganisho wa Ndani)

CREATE USER 'app_user'@'localhost'
IDENTIFIED BY 'StrongPasswordHere';

③ Toa Ruhusa za Hifadhidata

GRANT ALL PRIVILEGES
ON sample_db.*
TO 'app_user'@'localhost';

FLUSH PRIVILEGES;

Tengeneza Mtumiaji wa Ufikiaji wa Mbali (Kama Inahitajika Tu)

Sanidi hii tu ikiwa unahitaji kuunganisha kutoka kwa seva ya nje au mazingira ya wingu.

CREATE USER 'app_user'@'%'
IDENTIFIED BY 'StrongPasswordHere';

GRANT ALL PRIVILEGES
ON sample_db.*
TO 'app_user'@'%';

FLUSH PRIVILEGES;

Kumbuka: Alama ya “%” inaruhusu muunganisho kutoka kwa mwenyeji yeyote. Katika mazingira ya uzalishaji, kubainisha anwani ya IP maalum ni salama zaidi.

Jinsi ya Kuangalia Watumiaji wa Sasa na Ruhusa

SELECT user, host FROM mysql.user;

SHOW GRANTS FOR 'app_user'@'localhost';

Makosa ya Ruhusa ya Kawaida na Suluhisho

Ufikiaji umekataliwa kwa mtumiaji ‘app_user’

  • Ufafanuzi wa mwenyeji usio sahihi (tofauti kati ya localhost na %)
  • FLUSH PRIVILEGES haijatekelezwa
  • Jina la hifadhidata lisilo sahihi wakati wa kuunganisha

Hifadhidata isiyojulikana

  • Kosa la tahajia katika jina la hifadhidata
  • Hakuna ruhusa zilizotolewa kwa hifadhidata lengwa

Jinsi ya Kuruhusu Muunganisho wa Mbali katika MariaDB (Sahihisha Wakati Ufikiaji wa Nje Unashindwa)

Kwa chaguo-msingi, MariaDB inaruhusu muunganisho wa ndani pekee. Ikiwa unahitaji kuunganisha kutoka kwa seva ya nje au mazingira ya wingu, sanidi mipangilio ifuatayo.

① Badilisha bind-address

Hariri faili ya usanidi:

sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf

Tafuta mstari ufuatao:

bind-address = 127.0.0.1

Ili kuruhusu muunganisho wa nje, ubadilishe kuwa:

bind-address = 0.0.0.0

Baada ya kuhifadhi, anzisha upya MariaDB:

sudo systemctl restart mariadb

② Fungua Bandari 3306 kwenye Kizuizi

Kama unatumia UFW kwenye Ubuntu:

sudo ufw allow 3306
sudo ufw reload

Kwa usalama ulioboreshwa, bainisha anwani ya IP chanzo:

sudo ufw allow from 192.168.1.10 to any port 3306

③ Tengeneza Mtumiaji wa Ufikiaji wa Mbali

CREATE USER 'app_user'@'%'
IDENTIFIED BY 'StrongPasswordHere';

GRANT ALL PRIVILEGES
ON sample_db.*
TO 'app_user'@'%';

FLUSH PRIVILEGES;

Kwa usalama bora:

CREATE USER 'app_user'@'192.168.1.10'
IDENTIFIED BY 'StrongPasswordHere';

Orodha ya Ukaguzi Ikiwa Huwezi Kuunganisha Nje

1. Je, MariaDB Inaendesha?

sudo systemctl status mariadb

2. Je, Bandari 3306 Inasikiliza?

sudo ss -tulnp | grep 3306

Ikiwa inaonyesha 0.0.0.0:3306, inasikiliza ipasavyo kwenye kiolesura vyote.

3. Ikiwa Unatumia Mazingira ya Wingu (AWS / GCP / VPS)

  • Hakikisha bandari 3306 imefunguliwa katika kikundi cha usalama
  • Thibitisha kwamba hakuna kizuizi cha nje kinachozuia muunganisho

4. Sababu za Ujumbe wa Hitilafu

Haiwezi kuunganisha kwa seva ya MySQL

  • Bandari imefungwa
  • bind-address haijabadilishwa
  • Kizuizi kinazuia muunganisho

Ufikiaji umekataliwa kwa mtumiaji

  • Ufafanuzi usio sahihi wa mwenyeji wa mtumiaji
  • Nenosiri lisilo sahihi
  • Ruhusa hazijagawanywa

Muunganisho umeisha muda

  • Mipangilio ya usalama upande wa wingu
  • Masuala ya upitishaji wa mtandao

Vidokezo Muhimu vya Usalama

  • Epuka kutumia “%” katika mazingira ya uzalishaji
  • Tumia ufikiaji wa VPN inapowezekana
  • Fikiria kuwezesha muunganisho wa SSL/TLS
  • Usiruhusu kamwe kuingia kwa root kutoka mbali

Utatuzi wa Tatizo Wakati MariaDB Imeshindwa Kuanzisha (Hitilafu ya kushindwa)

① Angalia Hali ya Huduma

sudo systemctl status mariadb

② Angalia Logi za Kina

sudo journalctl -xe
sudo cat /var/log/mysql/error.log

③ Sababu za Kawaida

  • Makosa ya sarufi katika faili ya usanidi
  • Nafasi ya diski isiyotosha
  • Mgogoro wa bandari (MySQL tayari inaendesha)

④ Angalia Nafasi ya Disk

df -h

Muhtasari wa Sababu za Hitilafu ya Ufikiaji Umekataliwa

  • Nenosiri lisilo sahihi
  • Ufafanuzi usio sahihi wa mwenyeji (tofauti kati ya localhost na %)
  • FLUSH PRIVILEGES haijatekelezwa
  • Kujaribu kuingia kawaida kama root (inahitajika sudo mysql )

Maboresho ya Utendaji ya Msingi (Kwa Wanaoanza)

Advanced tuning is not required, lakini angalau, thibitisha mipangilio ifuatayo.

① Wezesha Log ya Swali Polepole

Ongeza ifuatayo kwenye 50-server.cnf:

slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 2

Anza upya MariaDB:

sudo systemctl restart mariadb

② Angalia Matumizi ya Index

Swali polepole zinaweza kukosa index sahihi.

EXPLAIN SELECT * FROM sample_table WHERE column_name = 'value';

③ Angalia Rasilimali za Server

top
htop

Ikiwa kumbukumbu haitoshi, zingatia kuboresha mpango wako wa server.

Masuala Yanayoulizwa Mara Kwa Mara (FAQ)

Ninawezaje kufunga toleo la MariaDB kwenye Ubuntu 22.04?

Tumia apt-mark hold mariadb-server.

Ninafanyaje kuweka upya nenosiri la root ikiwa nimesahau?

Unaweza kulirekebisha kwa kuanza katika hali salama na kuweka upya nenosiri. Tazama mwongozo wetu maalum kwa hatua za kina.

Ninafanyaje kubadilisha nambari ya bandari ya MariaDB?

Badilisha 50-server.cnf kuwa kitu kama port = 3307, kisha anza upya huduma.

Hitimisho: Kutumia MariaDB Kwa Usalama kwenye Ubuntu

  • Kutumia toleo la kawaida la kumbukumbu ni chaguo salama zaidi
  • Daima endesha mysql_secure_installation
  • Kamwe tumia root kwa uhusiano wa programu
  • Wezesha upatikanaji wa mbali tu wakati ni muhimu
  • Wakati wa kutatua matatizo, kuangalia magunia ni kipaumbele cha juu

Kwa kufuata hatua hizi, unaweza kujenga mazingira salama na tayari kwa uzalishaji ya MariaDB kwenye Ubuntu.