Потребителите на Ubuntu имат избор между две надеждни Системи за управление на релационни бази данни (RDBMS),MySQL иMariaDB . MySQL има дългогодишно предимство в популярността, но има повишен интерес към MariaDB поради предимствата на производителността и добавените функции. Това ръководство сравнява двете системи за бази данни и предоставя инструкции как да инсталирате и използвате MySQL в Ubuntu 20.04.
Какво е MySQL?
MySQL RDBMS е едно от най-популярните приложения с отворен код. Той е част от LAMP Stack , който е крайъгълният камък на много Ubuntu системи. Този стек се състои от Linux, уеб сървъра Apache, MySQL RDBMS и езика за програмиране PHP. Тези приложения работят заедно, за да поддържат уеб приложения, разработка на софтуер и специализирани дейности като науката за данни. Основната употреба на MySQL е в малки до средни конфигурации с един сървър.
MySQL заявките са написани на език на структурирани заявки (SQL). Като релационна база данни, тя съхранява и организира данни в таблици. Таблиците структурират действителните данни в таблиците като поредица от редове, като всеки ред се състои от една или повече колони. Всеки ред представлява различен запис в таблицата, докато всяка колона съдържа едно поле с данни в записа. Полетата с данни в тези таблици могат да бъдат свързани едно с друго и тези връзки помагат за структурирането и организирането на базата данни. Специализираните SQL изрази позволяват на клиентите да добавят, изтриват, променят и извличат данни.
MySQL е известен със своята стабилност и надеждност и се счита за прост и лесен за използване. Предлага се като безплатен софтуер с отворен код под GNU General Public License. MySQL е лесно достъпен за всички дистрибуции на Linux, както и за други операционни системи. Сега е собственост на Oracle Corporation. Oracle предлага и commercialMySQL Enterprise Edition като продукт от по-висок клас.
MySQL срещу MariaDB
Двете основни алтернативи на база данни с отворен код, MySQL и MariaDB, са много сходни. И двата са RDBMS продукти и двата използват SQL. И двете системи за бази данни имат безплатни версии и изглеждат и действат по почти същия начин. Тъй като MariaDB първоначално се разклонява от MySQL, това не е изненадващо. Оттогава MariaDB претърпя допълнително развитие и включва много нови подобрения в сигурността и производителността. С MySQL обаче много разширени функции се намират само в Enterprise Edition. Ето обобщение на приликите и разликите между двата продукта:
- MariaDB поддържа повече връзки от MySQL.
- И двете бази данни могат да работят с множество системи за съхранение, въпреки че MariaDB предлага повече опции.
- MariaDB може да репликира данни по-бързо от MySQL и има по-добра цялостна производителност. MySQL обработва големи транзакции по-ефективно, но MariaDB се представя по-добре в мащабирани ситуации.
- MySQL поддържа някои функции, които MariaDB няма, като динамични колони. Всяка база данни има няколко разширени функции и подобрения, които другата няма.
- MySQL е по-стар, по-добре установен, по-популярен и има повече подкрепа от общността. MySQL предлага по-изчерпателни планове за платена поддръжка.
- MariaDB и MySQL са напълно съвместими.
- И двата продукта са с отворен код, но моделът на лицензиране на MySQL е по-ограничителен.
За да обобщим, и двете системи са повече от адекватни за повечето потребители. MariaDB се отличава с по-добра производителност, докато MySQL е по-добре установен и по-добре поддържан.
Преди да започнете
-
Ако все още не сте го направили, създайте акаунт в Linode и Compute Instance. Вижте нашите ръководства Първи стъпки с Linode и Създаване на изчислителен екземпляр.
-
Следвайте нашето ръководство за настройка и осигуряване на изчислителен екземпляр, за да актуализирате вашата система. Може също да пожелаете да зададете часовата зона, да конфигурирате името на хоста си, да създадете ограничен потребителски акаунт и да укрепите SSH достъпа.
Забележка Стъпките в това ръководство са написани за потребители без root права. Командите, които изискват повишени привилегии, имат префикс сsudo
. Ако не сте запознати сsudo
команда, вижте ръководството за потребители и групи на Linux.
Как да инсталирате MySQL сървър
MySQL е наличен като част от пакетите по подразбиране на Ubuntu, така че не е необходимо да редактирате списъка с източници. Може лесно да се инсталира с помощта на apt
, но е важно да защитите приложението и след това да редактирате защитната стена. Тези инструкции са насочени към потребителите на Ubuntu, но обикновено са приложими за тези, които искат да инсталират MySQL в друга дистрибуция на Linux.
Изтеглете MySQL
За да инсталирате MySQL сървъра на Ubuntu, следвайте стъпките по-долу:
-
Инсталирайте сървърното приложение MySQL.
sudo apt install mysql-server
-
Потвърдете, че MySQL сървърът работи, като използвате
systemctl
команда. Трябва да показва състояние наactive
.sudo systemctl status mysql
mysql.service - MySQL Community Server Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset:> Active: active (running) since Thu 2021-09-09 12:24:29 UTC; 1h 44min ago
Конфигуриране на MySQL сървъра на Linux
mysql_secure_installation
помощната програма е най-лесният начин за конфигуриране на приложението. За да използвате скрипта за настройка, следвайте тези стъпки:
-
Стартирайте
mysql_secure_installation
помощна програма за задаване на root парола и конфигуриране на други опции по подразбиране.sudo mysql_secure_installation
-
Приложението пита дали да включи
VALIDATE PASSWORD COMPONENT
съставна част. Ако отговорите наy
, след това пита дали да зададе силата на паролата наLOW
,MEDIUM
илиHIGH
.VALIDATE PASSWORD COMPONENT can be used to test passwords and improve security. It checks the strength of password and allows the users to set only those passwords which are secure enough. Would you like to setup VALIDATE PASSWORD component?
-
При следващата подкана помощната програма иска парола за root акаунта. Задайте паролата и след това я въведете отново.
Please set the password for root here. New password: Re-enter new password:
-
Следните въпроси питат дали да се премахнат анонимни потребители, за да се разреши
root
акаунт, за да се свържете отдалечено и да премахнетеtest
база данни. Въведетеy
илиn
при всяка подкана според вашите предпочитания.test
базата данни е полезна по време на първоначалното валидиране, но от съображения за сигурност е най-добре да забранитеroot
акаунт от отдалечено влизане.By default, a MySQL installation has an anonymous user, allowing anyone to log into MySQL without having to have a user account created for them. This is intended only for testing, and to make the installation go a bit smoother. You should remove them before moving into a production environment. Remove anonymous users? (Press y|Y for Yes, any other key for No) : Normally, root should only be allowed to connect from 'localhost'. This ensures that someone cannot guess at the root password from the network. Disallow root login remotely? (Press y|Y for Yes, any other key for No) : By default, MySQL comes with a database named 'test' that anyone can access. This is also intended only for testing, and should be removed before moving into a production environment. Remove test database and access to it? (Press y|Y for Yes, any other key for No
-
Когато бъдете подканени, презаредете
privilege
таблици за актуализиране на базата данни.Reloading the privilege tables will ensure that all changes made so far will take effect immediately. Reload privilege tables now? (Press y|Y for Yes, any other key for No)
y
Success. All done!
-
(По избор ) За отдалечен достъп до MySQL се уверете, че трафикът на MySQL е разрешен чрез
ufw
защитна стена. Добавете следното правило, за да отворите порт3306
на защитната стена. Това правило не трябва да се добавя, ако не се изисква отдалечен достъп.ufw allow mysql
Status: active To Action From -- ------ ---- Apache Full ALLOW Anywhere OpenSSH ALLOW Anywhere 3306/tcp ALLOW Anywhere Apache Full (v6) ALLOW Anywhere (v6) OpenSSH (v6) ALLOW Anywhere (v6) 3306/tcp (v6) ALLOW Anywhere (v6)
Влезте в MySQL като root потребител
Въпреки че root
потребителят има пълен достъп до базата данни MySQL, използването й трябва да бъде запазено за административни цели. Това намалява вероятността от случайно презаписване на критични секции от базата данни. Дори при настройка за един потребител трябва да се създаде отделен потребителски акаунт за повечето MySQL дейности.
За достъп до MySQL сървъра като root
потребител и създайте нов потребителски акаунт, следвайте тези стъпки:
-
Използвайте
sudo mysql
команда за достъп до базата данни. MySQL удостоверява root потребителя въз основа на техните идентификационни данни на root, когато влизат локално, така че не се изисква парола. Друга възможност е да получите достъп до root акаунта, като използватеsudo mysql -u root -p
, заедно сroot
парола.sudo mysql
-
MySQL показва номера на изданието и известна информация за инсталацията и след това представя подканата за MySQL.
Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 15 Server version: 8.0.26-0ubuntu0.20.04.2 (Ubuntu) ... mysql>
-
За да потвърдите, че MySQL работи правилно, използвайте
SHOW DATABASES
команда за показване на всички бази данни.SHOW DATABASES;
+--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | sys | +--------------------+ 4 rows in set (0.01 sec)
-
Създайте нов потребител с помощта на
CREATE USER
команда. Въведете потребителското име във формат'username'@'IP_Address'
, къдетоIP_Address
е IP адресът на потребителя. Ако потребителят осъществява достъп до MySQL от локалния Linode, заменетеlocalhost
на мястото на IP адреса. В командата по-долу заменетеmysqluser
иpassword
с действителното потребителско име и парола.Забележка MySQL предлага няколко различни механизма за удостоверяване.
caching_sha2_password
методът се препоръчва за потребители, които искат да влязат с парола и се използва тук. Въпреки това някои по-стари приложения може да не са в състояние да се удостоверят правилно по този начин. В този случайmysql_native_password
трябва да се използва вместо това. Репликацията на MySQL източник-реплика може да изискваsha256_password
метод.CREATE USER 'mysqluser'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'password';
-
Предоставете достъп на новия потребител с помощта на
GRANT PRIVILEGE
команда, използвайки форматаGRANT list of privileges ON table TO 'username'@'IP_Address';
. Някои от по-често срещаните привилегии включватCREATE
,ALTER
,DROP
,INSERT
,UPDATE
,DELETE
иSELECT
. За да приложите тези привилегии към всички бази данни, използвайте заместващата променлива*.*
. Следната команда предоставя общи неадминистративни привилегии за всички бази данни наmysqluser
.GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES, RELOAD ON *.* TO 'mysqluser'@'localhost' WITH GRANT OPTION;
-
За да излезете от подканата на MySQL, въведете
exit
.exit
Как да използвам MySQL
MySQL използва стандартен SQL синтаксис за всички свои команди. Стъпките в този раздел демонстрират как да изпълнявате основни задачи в MySQL, като създаване на бази данни, таблици и добавяне на данни. За пълна информация как да използвате MySQL, вижте Справочното ръководство за MySQL. За кратко, но задълбочено въведение, опитайте урока за MySQL.
Създаване на база данни
-
За да създадете база данни, влезте в MySQL, като използвате акаунт с
CREATE
привилегии. Заменетеmysqlusername
със създаденото от вас потребителско име.mysql -u mysqlusername -p
-
Създайте нова база данни с помощта на
CREATE DATABASE
команда. Заменетеnewdatabasename
с желаното име за вашата база данни.CREATE DATABASE newdatabasename;
Query OK, 1 row affected (0.00 sec)
-
За да потвърдите, че новата база данни е създадена правилно, използвайте
SHOW DATABASES
.SHOW DATABASES;
+--------------------+ | Database | +--------------------+ ... | newdatabasename | ... +--------------------+ 5 rows in set (0.00 sec)
-
Посочете базата данни, с която искате да работите, като използвате
USE
команда. Заменетеnewdatabasename
с името на базата данни, която току-що създадохте.USE newdatabasename;
Database changed
Забележка Можете също да използвате
USE
команда, когато имате повече от една база данни и искате да превключвате между тях. -
За да разберете името на текущата база данни, използвайте
SELECT DATABASE
команда. Резултатът показва името на базата данни.SELECT DATABASE();
+------------------+ | DATABASE() | +------------------+ | newdatabasename | +------------------+
Създайте таблица
В този момент базата данни, newdatabasename
няма никакви таблици, така че все още не е възможно да се съхраняват никакви данни в него. За да дефинирате таблица, използвайте CREATE TABLE
команда. Заедно с името на таблицата, тази команда изисква името и типа данни на всяко поле. Типът данни характеризира данните, съхранявани в полето. Например, типът данни може да бъде низ с променлива дължина, известен като VARCHAR
. За пълен списък с типове данни вижте документацията на MySQL. Някои от по-често срещаните типове данни са както следва.
- ИНТ: Това може да съдържа стойност между
-2147483648
и2147483647
. Ако е посочено катоUNSIGNED
, може да съхранява стойности между0
и4294967295
. - SMALLINT: Съдържа още по-малка стойност на цяло число между
-32768
и32767
. - ПЛАВАНЕ: Този тип може да съхранява число с плаваща запетая.
- ДАТА: Съхранява дата в
YYYY-MM-DD
формат. - ДАТА ВРЕМЕ: Съхранява комбинация от дата и час в
YYYY-MM-DD HH:MM:SS
формат. Същото време може да се съхранява без тирета и двоеточия вTIMESTAMP
формат. - VARCHAR(N): Това е низ с променлива дължина между
1
иN
символи по дължина, с максимална дължина от255
символи. - ТЕКСТ: Този тип данни съдържа до
65535
символи. Може да съдържа текст, изображения или двоични данни. - CHAR(N): Този тип представлява текстово поле с фиксирана дължина с дължина
N
. Например, за да задържите двусимволни кодове на състоянието, използвайте тип данниCHAR(2)
.
Преди да създадете каквито и да е таблици, важно е да вземете решение за схема за базата данни. Схемата описва какво представлява всяка таблица, какви данни се съхраняват във всяка таблица и как се свързват таблиците. За да създадете таблица, следвайте тези стъпки:
-
Докато сте влезли в MySQL, превключете към базата данни, където искате да добавите таблицата.
use newdatabasename;
-
Използвайте
CREATE TABLE
команда за генериране на нова таблица. Използвайте форматаCREATE TABLE table_name (field_1 datatype, field_n datatype);
.CREATE TABLE newtablename (column1 VARCHAR(20), column2 CHAR(1), column3 DATE, column4 SMALLINT UNSIGNED);
Query OK, 0 rows affected (0.02 sec)
-
За да потвърдите, че таблицата вече съществува, използвайте
SHOW TABLES
команда.SHOW TABLES;
+----------------------------+ | Tables_in_newdatabasename | +----------------------------+ | newtablename | +----------------------------+ 1 row in set (0.00 sec)
-
За да прегледате структурата на таблицата и да проверите списъка с полета, използвайте
DESCRIBE
команда.DESCRIBE newtablename;
+---------+-------------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +---------+-------------------+------+-----+---------+-------+ | column1 | varchar(20) | YES | | NULL | | | column2 | char(1) | YES | | NULL | | | column3 | date | YES | | NULL | | | column4 | smallint unsigned | YES | | NULL | | +---------+-------------------+------+-----+---------+-------+ 4 rows in set (0.00 sec)
-
Ако таблицата вече не е необходима, изтрийте я с помощта на
DROP TABLE
команда.Внимание Когато дадена таблица бъде изпусната, всички данни в нея се губят и не могат да бъдат възстановени.
DROP TABLE newtablename;
Добавяне и извличане на данни
Основният начин за вмъкване на нов ред данни в таблица е с INSERT
команда.
-
За да добавите ред, използвайте
INSERT
команда. Посочете името на таблицата, ключовата думаVALUES
и списък със стойности в скоби, разделени със запетаи във форматINSERT INTO tablename VALUES ('value_1', ... 'value_n');
. Стойностите на колоните трябва да имат същата последователност като дефиницията на таблицата, като стойностите на низа и датата са в кавички. Например, за да добавите данни къмnewtablename
, посочете стойности заcolumn1
,column2
,column3
иcolumn4
, в този ред.INSERT INTO newtablename VALUES ('value1','a','2021-09-10',123);
Query OK, 1 row affected (0.01 sec)
-
За да извлечете данни, използвайте
SELECT
команда, заедно с някои ограничения, които казват на MySQL кои редове да върне. Може да бъде върнато цялото съдържание на таблицата или само подмножество. За да изберете всички редове в таблица, използвайтеSELECT *
команда, но не добавяйте никакви квалификатори.SELECT * FROM newtablename;
+---------+---------+------------+---------+ | column1 | column2 | column3 | column4 | +---------+---------+------------+---------+ | value1 | a | 2021-09-10 | 123 | | value2 | b | 2021-09-08 | 123 | +---------+---------+------------+---------+ 2 rows in set (0.00 sec)
-
Възможно е също да изберете само редове, отговарящи на определени критерии, например, когато колона е зададена на определена стойност. Използвайте
WHERE
ключова дума като квалификатор, последвана от критериите за съвпадение като ограничение. В този пример само редове, в коитоcolumn2
е настроен наb
се показват.SELECT * FROM newtablename WHERE column2 = 'b';
+---------+---------+------------+---------+ | column1 | column2 | column3 | column4 | +---------+---------+------------+---------+ | value2 | b | 2021-09-08 | 123 | +---------+---------+------------+---------+ 1 row in set (0.00 sec)
-
За таблици с много колони често е по-лесно да се ограничи информацията, която се показва. За да изберете само определени колони за всеки ред, посочете имената на колоните вместо
*
символ.SELECT column1, column4 FROM newtablename;
+---------+---------+ | column1 | column4 | +---------+---------+ | value1 | 123 | | value2 | 123 | +---------+---------+ 2 rows in set (0.00 sec)
-
За да промените ред в таблица, използвайте
UPDATE
команда.SET
ключова дума указва колоната за актуализиране и новата стойност. Ако е необходимо,WHERE
ключова дума предоставя метод за ограничаване на операцията да се прилага само към определени редове. В следващия пример стойността наcolumn4
се променя само на155
акоcolumn2
е равно наb
.UPDATE newtablename SET column4 = 155 WHERE column2 = 'b';
Query OK, 1 row affected (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 0
-
SELECT *
изявлението може да се използва за потвърждение на актуализацията.SELECT * FROM newtablename;
+---------+---------+------------+---------+ | column1 | column2 | column3 | column4 | +---------+---------+------------+---------+ | value1 | a | 2021-09-10 | 123 | | value2 | b | 2021-09-08 | 155 | +---------+---------+------------+---------+ 2 rows in set (0.00 sec)
Заключение:MySQL на Ubuntu 20.04
MySQL е добър избор за малки и средни уеб приложения. Той използва стандартния за индустрията език за програмиране SQL, който е доста лесен за използване. MySQL е много стабилен и здрав и има много ресурси, заедно с добра поддръжка. Основната алтернатива на MySQL е MariaDB. Той разполага с по-добра производителност и по-нови функции, но не е толкова добре установен.
Можете лесно да изтеглите и инсталирате MySQL сървъра на Ubuntu с помощта на apt
пакети и mysql_secure_installation
полезност. Дори ако сте единственият човек, който използва MySQL, най-добре е да създадете нов потребител на MySQL с по-ограничени привилегии.
За да използвате MySQL, първо определете схемата на базата данни и дефинирайте съдържанието на таблицата. След това създайте база данни и таблиците с данни. Данните могат да се добавят с помощта на INSERT
команда, променена с помощта на UPDATE
команда и се извлича с помощта на SELECT
команда. Разбира се, MySQL може да изпълнява дори много сложни операции. Прочетете урока за MySQL, за да започнете, и се консултирайте с документацията на MySQL за пълен преглед.
Повече информация
Може да пожелаете да се консултирате със следните ресурси за допълнителна информация по тази тема. Въпреки че те са предоставени с надеждата, че ще бъдат полезни, моля, имайте предвид, че не можем да гарантираме за точността или навременността на външно хостваните материали.
- Уебсайт на MariaDB
- Уебсайт на MySQL