লোকালি আমরা যেমন 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;