MySQLን መጫን አንድ ትዕዛዝ ነው። አብዛኛው ስራ የሚመጣው ከዚያ በኋላ ነው፦ ለመተግበሪያው ተጠቃሚ፣ ወደብ 3306ን በኢንተርኔት ላይ ሳያስቀምጡ ከኮምፒውተርዎ ዳታቤዙን የሚደርሱበት መንገድ፣ ለትንሽ አገልጋይ የማህደረ ትውስታ ቅንብሮች፣ እና ያለ እርስዎ የሚሄዱ ምትኬዎች። ይህ መመሪያ አራቱንም በUbuntu 24.04 ላይ ይሸፍናል። እያንዳንዱ እርምጃ በUbuntu 24.04 ምስላችን ላይ ተሂዷል፣ ከታች ያሉት አሃዞችም ከዚያው አገልጋይ ናቸው።
ትዕዛዞቹን sudo ባለው ተጠቃሚ ያሂዱ። የUbuntu ማዘጋጃ መመሪያ አንድ ይፈጥራል።
1. ይጫኑ
sudo apt update
sudo apt install -y mysql-server
mysql --version
በአገልጋያችን ላይ መጫኑ 51 ሰከንድ ወስዶ MySQL 8.0.46 ሰጠን። ወዲያውኑ ይጀምራል፣ በእያንዳንዱ ማስነሻ እንደገና ይጀምራል፣ እና በራሱ በአገልጋዩ ላይ ብቻ ያዳምጣል፦ ለመደበኛ ግንኙነቶች 127.0.0.1:3306፣ ለአዲሱ የMySQL X ፕሮቶኮል ደግሞ 127.0.0.1:33060። ከውጭ እስካሁን ምንም አይደረስም።
2. ዳታቤዝ እና ተጠቃሚ ይፍጠሩ
በUbuntu ላይ የMySQL root መለያ የሶኬት ማረጋገጫ ስለሚጠቀም sudo mysql ያለ ይለፍ ቃል ያስገባዎታል። ለመተግበሪያዎ ዳታቤዝ እና ተጠቃሚ ይፍጠሩ፦
sudo mysql
CREATE DATABASE app CHARACTER SET utf8mb4;
CREATE USER 'app'@'localhost' IDENTIFIED BY 'a-long-random-password';
GRANT ALL PRIVILEGES ON app.* TO 'app'@'localhost';
EXIT;
መተግበሪያው በሚገናኝበት መንገድ ይሞክሩት፦
mysql -u app -p app -e "SELECT CURRENT_USER();"
app@localhost ማሳየት አለበት። የተሳሳተ የይለፍ ቃል ERROR 1045 (28000): Access denied for user 'app'@'localhost' ያገኛል። ተጠቃሚው በapp ውስጥ ሁሉንም ማድረግ ይችላል፣ ከውጭው ግን ምንም።
3. ከኮምፒውተርዎ ይገናኙ፦ የSSH ዋሻ
በራስዎ ማሽን ላይ እንደ DBeaver፣ MySQL Workbench ወይም የmysql ትዕዛዝ መስመር ያለ የዴስክቶፕ ደንበኛ ለመጠቀም ምንም ወደብ አይክፈቱ። በSSH አንዱን ያስተላልፉ፦
ssh -L 3307:127.0.0.1:3306 deploy@YOUR.SERVER.IP
በNAT ጥቅል ላይ -p እና ከዳሽቦርዱ ያለውን የግል SSH ወደብ ያክሉ። ያ መስኮት ክፍት እስካለ ድረስ ደንበኛውን ወደ አስተናጋጅ 127.0.0.1፣ ወደብ 3307፣ ተጠቃሚ app ያቅኑት። በአካባቢው በኩል 3307ን የወሰድነው በኮምፒውተርዎ ላይ ሊሰራ ከሚችል MySQL ጋር እንዳይጋጭ ነው። በሙከራችን አገልጋዩ በዋሻው በኩል ወዲያውኑ መለሰ፣ በ3306 ወደ አድራሻው የተደረገ ቀጥተኛ ግንኙነት ግን ተከለከለ።
4. ለአንድ ሌላ አገልጋይ ቀጥተኛ መዳረሻ
አንዳንድ ጊዜ መተግበሪያው በሁለተኛ አገልጋይ ላይ ይሰራል እና በቀጥታ መገናኘት አለበት። ለዚህ ዳታቤዙ የራሱ IPv4 ያለው ጥቅል ያስፈልገዋል፣ ምክንያቱም የNAT ጥቅል የሚያስተላልፈው የSSH ወደብዎን ብቻ ነው። ሦስት ለውጦች፣ ሁሉም በመተግበሪያው አገልጋይ አድራሻ (እዚህ 203.0.113.20) የተገደቡ፦
sudo sed -i 's/^bind-address.*/bind-address = 0.0.0.0/' /etc/mysql/mysql.conf.d/mysqld.cnf
sudo systemctl restart mysql
sudo ufw allow from 203.0.113.20 to any port 3306 proto tcp
CREATE USER 'app'@'203.0.113.20' IDENTIFIED BY 'a-long-random-password';
GRANT ALL PRIVILEGES ON app.* TO 'app'@'203.0.113.20';
ufw እስካሁን ካልበራ መጀመሪያ SSHን ይፍቀዱ (sudo ufw allow OpenSSH)፣ ከዚያ sudo ufw enableን ያሂዱ። ዝርዝሩ በufw መመሪያ ውስጥ አለ።
ሁለቱንም መቆለፊያዎች በተናጠል ፈትሸናል። የፋየርዎል ደንቡ ኖሮ ተዛማጅ የMySQL ተጠቃሚ ሳይኖር አገልጋዩ በerror 1130: Host '…' is not allowed to connect to this MySQL server ከለከለ። ተጠቃሚው ሲጨመር ግንኙነቱ አለፈ። የፋየርዎል ደንቡ ሲወገድ ግንኙነቱ በቀላሉ ጊዜው አለፈ። በኢንተርኔት ላይ ያለ ማንኛውም ሌላ አድራሻ ይህንኑ የጊዜ ማለፍ ያገኛል።
5. ያነሰ RAM ይጠቀሙ
ስራ ፈት ሆኖ እና የራሱ ዳታ ሳይኖረው MySQL 8.0 በአገልጋያችን ላይ 383 MB ተጠቀመ። አብዛኛው የPerformance Schema ነው፣ ማህደረ ትውስታን አስቀድሞ የሚይዝ የምርመራ ባህሪ። በትንሽ VPS ላይ ያጥፉት እና የዋናውን መሸጎጫ መጠን ራስዎ ይወስኑ፦
sudo tee /etc/mysql/mysql.conf.d/zz-small-vps.cnf >/dev/null <<'EOF'
[mysqld]
performance_schema = OFF
innodb_buffer_pool_size = 256M
max_connections = 50
EOF
sudo systemctl restart mysql
ps -o rss= -C mysqld
ዳግም ከተነሳ በኋላ 165 MB ተጠቀመ። buffer pool ዳታዎን እና ኢንዴክሶችዎን ይሸጉጣል፣ 256 MB ደግሞ መተግበሪያውንም ለሚያሄድ የ2 GB አገልጋይ ይስማማል። ዳታቤዙ የአገልጋዩ ዋና ስራ ከሆነ እና ከመሸጎጫው ካደገ ይጨምሩት። max_connections = 50 የግንኙነት ገንዳ ላለው አንድ መተግበሪያ ከበቂ በላይ ነው። የperformance_schema ስታቲስቲክስ ያጣሉ። አንድ ቀን ቀርፋፋ መጠይቆችን በዝርዝር መመርመር ካስፈለገ እንደገና ያብሩት።
6. የምሽት ምትኬዎች
mysqldump --single-transaction መተግበሪያውን ሳይዘጋ የInnoDB ሰንጠረዦችን ወጥ ቅጂ ይወስዳል። በትንሽ ስክሪፕት ውስጥ ያስቀምጡት፦
sudo tee /usr/local/bin/mysql-backup >/dev/null <<'EOF'
#!/bin/bash
set -euo pipefail
umask 077
mkdir -p /var/backups/mysql
mysqldump --single-transaction --routines --triggers app | gzip > /var/backups/mysql/app-$(date +%F).sql.gz
find /var/backups/mysql -name 'app-*.sql.gz' -mtime +14 -delete
EOF
sudo chmod 755 /usr/local/bin/mysql-backup
echo '0 3 * * * root /usr/local/bin/mysql-backup' | sudo tee /etc/cron.d/mysql-backup
sudo /usr/local/bin/mysql-backup && sudo ls -l /var/backups/mysql
እያንዳንዱ መስመር ምክንያት አለው፦
umask 077ዳምፑን በroot ብቻ የሚነበብ ያደርገዋል (-rw-------)፣ ምክንያቱም ሁሉንም ዳታዎን ይዟል።pipefailmysqldumpሲወድቅ መላው ስክሪፕት እንዲወድቅ ያደርጋል። ያለሱgzipትንሽ ባዶ ማህደር ጽፎ ስኬትን ይዘግብ ነበር። ትዕዛዙን ሆን ብለን አበላሸነው፣ ስክሪፕቱም እንደሚገባው በኮድ 2 ወጣ።find … -mtime +14 -deleteየሁለት ሳምንት ቅጂዎችን ያስቀምጣል።- ስክሪፕቱ እንደ root ስለሚሄድ
mysqldumpበሶኬት ይገባል፣ በፋይል ውስጥም ምንም የይለፍ ቃል የለም።
አንድም ጊዜ ያልመለሱት ምትኬ ገና አይቆጠርም። ወደ ጊዜያዊ ዳታቤዝ መልሰው ዳታውን ይመልከቱ፦
sudo mysql -e "CREATE DATABASE app_restore"
gunzip -c /var/backups/mysql/app-2026-10-25.sql.gz | sudo mysql app_restore
sudo mysql -e "SHOW TABLES FROM app_restore"
sudo mysql -e "DROP DATABASE app_restore"
በሙከራችን የተመለሰው ሰንጠረዥ እንደ መጀመሪያው ተመሳሳይ ረድፎች ነበሩት። በዚያው ዲስክ ላይ ያሉ ቅጂዎች አገልጋዩን ቢያጡ አይጠብቁዎትም፣ ስለዚህ አልፎ አልፎ በscp ወይም በrestic ወደ ሌላ ማሽን ያውጧቸው። Managed Backups በዚህ ላይ የመላውን አገልጋይ ዕለታዊ የመመለሻ ነጥቦች ይጨምራል።
የትኛው ጥቅል
Micro (2 vCPU፣ 2 GB፣ 25 GB፣ በወር $5) ከላይ እንደተስተካከለው MySQLን እና የድር መተግበሪያን ይይዛል። ዳታቤዙ ራሱ ከጥቂት ጊጋባይት ካለፈ 4 GB እና 35 GB ያለው በወር $8 የሆነው Small ለbuffer pool 1 GB ወይም ከዚያ በላይ እንዲሰጡ ያስችልዎታል። ሁለቱም የNAT ጥቅሎች ናቸው፣ የደረጃ 3 SSH ዋሻም በእነሱ ላይ ይሰራል። ደረጃ 4 የራስዎ IPv4 ይፈልጋል፦ Micro-IP በወር $10 ነው።
PostgreSQLን ይመርጣሉ? የPostgreSQL መመሪያ ተመሳሳዩን እቅድ ይከተላል። ሁሉም ጥቅሎች በVPS ውስጥ አሉ፣ ክፍያም በBase፣ Ethereum ወይም Polygon አውታሮች ላይ በUSDT፣ USDC ወይም ETH ይፈጸማል።
አስተያየቶች
እስካሁን አስተያየቶች የሉም። መጀመሪያ ይሁኑ።