VPS এ MySQL ইন্সটল এবং অন্যান্য

লোকালি আমরা যেমন MySQL ইন্সটল করে ব্যবহার করি, সার্ভারেও তেমন ভাবে ইন্সটল করতে হয়। যারা শেয়ার্ড হোস্টিং কিনে ব্যবহার করি, তাদের সাধারণত এসব ইন্সটল করতে হয় না। সব প্যাকেজ আকারে থাকে। VPS ব্যবহার করলে নিজে নিজে সব কনফিগার করতে হয়। যেমন লিনাক্স বেইজড কোন সার্ভারে নিচের কমান্ড রান করে MySQL সার্ভার ইন্সটল করা যাবেঃ

sudo apt install mysql-server -y

ইন্সটলের পর MySQL স্টার্ট করা এবং সিস্টেম যখন রান হবে, তখন যেন রান হয়, তার জন্যঃ

sudo systemctl start mysql
sudo systemctl enable mysql

রান হচ্ছে কিনা, তার স্ট্যাটাস জানতেঃ

sudo systemctl status mysql

যেহেতু আমরা সার্ভারে ইন্সটল করেছি, আমাদের প্রয়োজন হবে MySQL এর সিকিউরিটি নিশ্চিত করাঃ

sudo mysql_secure_installation

এখানে বেশ কিছু প্রশ্ন জিজ্ঞেস করবে। এগুলো Yes/No উত্তর দিয়ে সিকিউরিটি নিশ্চিত করতে পারব।

এরপর MySQL এ লগিন করে যে কোন কমান্ড রান করতে পারবঃ

sudo mysql -u root -p 

রুট পাসওয়ার্ড দেওয়ার পর mysql প্রম্পট দেখাবে। এখানে বিভিন্ন কোয়েরি লিখতে পারব। যেমন একটা ডেটাবেজ তৈরি করার জন্যঃ

CREATE DATABASE databasename;

mysql প্রম্পট থেকে বের হওয়ার জন্য EXIT; টাইপ করব।

রিমোট এক্সেস

VPS এ ইন্সটল হওয়া MySQL যদি অন্য যায়গা যেমন লোকাল কম্পিউটার থেকে এক্সেস করতে চাই, তাহলে আমাদের কনফিগারেশন পরিবর্তন করতে হবে। যেমন প্রথমে MySQL config পরিবর্তন করবঃ

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

bind-address = 127.0.0.1

উপরের bind-address পরিবর্তন করে অন্য যে কোন VPS এর IP অথবা 0.0.0.0 সেট করব। যা ব্যবহার করে যে কোন যায়গা থেকে এক্সেস করা যাবে। এরপর রিস্টার্ট করে নিবঃ

sudo systemctl restart mysql

রিমোট ইউজার তৈরি এবং তার জন্য প্রিভিলিজ তৈরিঃ

CREATE USER 'remoteuser'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON myappdb.* TO 'remoteuser'@'%';
FLUSH PRIVILEGES;

VPS firewall যেন পোর্ট 3306 এলাউ করে, তার জন্য:

sudo ufw allow 3306

এবার VPS থেকে এভাবে MySQL এক্সেস করতে পারবঃ

mysql -u myuser -p -h localhost

অথবা রিমোটলিও এক্সেস করতে পারব।

গ্রাফিকাল ইন্টারফেস

যারা শেয়ার্ড হোস্টিং এ কাজ করেছি, তারা phpMyAdmin এর সাথে পরিচিত। এমন এছাড়া রয়েছে Adminer। এডমিনার খুবি লাইটওয়েট। মাত্র একটা পিএইচপি ফাইল ব্যবহার করে ইন্টারফেস তৈরি করে। ব্রাউজার থেকে ডেটাবেজ ম্যানেজ করার জন্য এগুলো ব্যবহার করতে পারি। phpMyAdmin এর সাথে সবাই পরিচিত, তাই phpMyAdmin উদাহরণ হিসেবে দেখাচ্ছি। phpmyadmin ইন্সটল করার জন্যঃ

sudo apt install phpmyadmin

যা আমাদের জিজ্ঞেস করবে কোন ওয়েব সার্ভার ব্যবহার করব। যেমন আমি সিলেক্ট করলাম apache2। এপাচি ঠিক মত রান হচ্ছে কিনা, তা চেক করতে পারব নিচের কমান্ড ব্যবহার করেঃ

sudo systemctl status apache2

সিম্বোলিক লিংক তৈরিঃ

sudo ln -s /usr/share/phpmyadmin /var/www/html/phpmyadmin

এপাচি রিস্টার্টঃ

sudo systemctl restart apache2

সব কিছু ঠিক থাকলে http://your_vps_ip/phpmyadmin ঠিকানায় phpMyAdmin এক্সেস করা যাবে। এখানে রুট ইউজার এবং phpmyadmin ইন্সটল করার সময় ব্যবহৃত পাসওয়ার্ড দিয়ে লগিন করা যাবে।

ডিফল্ট ভাবে পোর্ট 80 তে এপাচি ওপেন হবে। আমরা এটা পরিবর্তন করে নিব যদি ঐ পোর্টে অন্য কোন সার্ভার রানিং থাকে। তার জন্য নিচের কমান্ড রান করে Listen 80 পরিবর্তন করে Listen 8080 বা অন্য কোন পোর্ট ব্যবহার করব।

sudo nano /etc/apache2/ports.conf

এরপর এপাচি রিস্টার্ট করে নিবঃ

sudo systemctl restart apache2

এরপর http://your_vps_ip:8080/phpmyadmin এড্রেসে পিএইচপি মাই এডমিন এক্সেস করতে পারব।

যদি লগিন করার সময় নিচের মত করে এরর দেখা দেয়ঃ

mysqli::real_connect(): (HY000/1698): Access denied for user 'root'@'localhost'

তাহলে রুট ইজারের অথেনটিকেশন auth_socket থেকে mysql_native_password এ পরিবর্তন করে নিব। তার জন্য mysql প্রম্পটে নিচের মত করে কমান্ড লিখবঃ

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'YourStrongPassword';
FLUSH PRIVILEGES;
EXIT;

যদিও এটা ভালো প্র্যাকটিস না। ভালো হয় যদি MySQL এর জন্য আলাদা ইউজার তৈরি করে নেওয়া হয়। তার জন্য mysql প্রম্পটে নিচের মত করে কমান্ড লিখবঃ

CREATE USER 'dbuser'@'localhost' IDENTIFIED BY 'StrongPassword123!';
GRANT ALL PRIVILEGES ON *.* TO 'pmauser'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
EXIT;

এরপর phpMyAdmin এ এই dbuser ব্যবহার করতে পারব।

এভাবে ইউজার তৈরি করার পর অবশ্যই রুট ইউজারের জন্য auth_socket রিএনাবল করে নিবঃ

ALTER USER 'root'@'localhost' IDENTIFIED WITH auth_socket;
FLUSH PRIVILEGES;
EXIT;

কিছু কমন কমান্ড

Leave a Comment