В наши дни каквото и сериозно да се захване човек, няма как да не се сблъска с бази данни. Един от многото случаи е използването на MySQL. Може би най-популярния, затова ще разгледамe него. Също така беше добре, да видим как работят помежду си Apache MySQL и PHP, но това ще го оставим за по късно, когато ще правим пощенски сървър. Тогава има доста тънки моменти на които трябва да се обърне внимание и мисля, че тогава ще стане ясно на взаимодействието им. Като за начало да инсталирамe MySQL (в Debian 9 вече се ползва MariaDB)
# apt-get install mariadb-server
Да проверим дали работи:
# systemctl restart mysql.service # systemctl status mysql.service ● mariadb.service - MariaDB database server Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: enabled) Active: active (running) since Thu 2017-12-28 09:10:01 EST; 2min 39s ago Main PID: 5773 (mysqld) Status: "Taking your SQL requests now..." CGroup: /system.slice/mariadb.service └─5773 /usr/sbin/mysqld Dec 28 09:09:59 home systemd[1]: Starting MariaDB database server... Dec 28 09:10:00 home mysqld[5773]: 2017-12-28 9:10:00 140111870419520 [Note] /usr/sbin/mysqld (mysqld Dec 28 09:10:01 home systemd[1]: Started MariaDB database server.
Да изтрием някои настройки по подразбиране и да направим нашия MySQL по сигурен.
# mysql_secure_installation Enter current password for root (enter for none): Enter # Просто натискаме Change the root password? [Y/n] Y New password: MySQL Re-enter new password: MySQL Remove anonymous users? [Y/n] Y Disallow root login remotely? [Y/n] Y Remove test database and access to it? [Y/n] Y Reload privilege tables now? [Y/n] Y
Проверка дали MySQL е свързан с localhost
# cat /etc/mysql/mariadb.conf.d/50-server.cnf |grep bind bind-address = 127.0.0.1
Сега малко практика, влизаме с главния потребител, root в MySQL
# mysql -u root -p Enter password: MySQL Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 3 Server version: 10.1.26-MariaDB-0+deb9u1 Debian 9.1 Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
Показване на налични бази данни
mysql> show databases;
Влизне в базата данни mysql
mysql> use mysql;
Показване на таблиците в базата mysql
mysql> show tables;
Избиране елемент от таблицата в базата mysql
mysql> select * from mysql.host;
Да видим и кой има права в базата данни mysql
MariaDB [(none)]> select user,host,password from mysql.user;
До тука само root има права върху база mysql. Излизаме от mysql
mysql> quit
Създаване/триене на потребител в MySQL и дефиниране на права върху базите.
mysql> drop user 'pfuser'@'127.0.0.1';
Трие потребител pfuser@127.0.0.1 от MySQL
mysql> create user 'psfuser'@'127.0.0.1' identified by 'pfpass';
Създава потребител pfuser@127.0.0.1 с парола pfpass
mysql> grant all privileges on pfdb.* to 'pfuser'@'127.0.0.1';
Дава пълни права на потребителя
mysql> flush privileges;
Активира промените, като чисти вътрешния кеш. На практика презарежда таблиците. За дефиниране на права на конкретен потребител се ползва GRANT
GRANT [тип право] ON [име база данни].[име таблица] TO ‘[име на потеребителя]’@'localhost’; (вместо localhost може да се ползва IP)
За лишаване на права е практически същото
REVOKE [тип право] ON [име база данни].[име таблица] TO ‘[име на потеребителя]’@'localhost’; (вместо localhost може да се ползва IP)
Създаваме празна база данни
# mysql_install_db
За сега толкова с MySQL-a, в бъдеще когато правим Mail сървъра ще задълбочим в ползването му.