Mysql
 sql >> база данни >  >> RDS >> Mysql

Инсталиране и конфигуриране на MySQL на Ubuntu 20.04

Потребителите на 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 е по-добре установен и по-добре поддържан.

Преди да започнете

  1. Ако все още не сте го направили, създайте акаунт в Linode и Compute Instance. Вижте нашите ръководства Първи стъпки с Linode и Създаване на изчислителен екземпляр.

  2. Следвайте нашето ръководство за настройка и осигуряване на изчислителен екземпляр, за да актуализирате вашата система. Може също да пожелаете да зададете часовата зона, да конфигурирате името на хоста си, да създадете ограничен потребителски акаунт и да укрепите SSH достъпа.

Забележка Стъпките в това ръководство са написани за потребители без root права. Командите, които изискват повишени привилегии, имат префикс с sudo . Ако не сте запознати с sudo команда, вижте ръководството за потребители и групи на Linux.

Как да инсталирате MySQL сървър

MySQL е наличен като част от пакетите по подразбиране на Ubuntu, така че не е необходимо да редактирате списъка с източници. Може лесно да се инсталира с помощта на apt , но е важно да защитите приложението и след това да редактирате защитната стена. Тези инструкции са насочени към потребителите на Ubuntu, но обикновено са приложими за тези, които искат да инсталират MySQL в друга дистрибуция на Linux.

Изтеглете MySQL

За да инсталирате MySQL сървъра на Ubuntu, следвайте стъпките по-долу:

  1. Инсталирайте сървърното приложение MySQL.

    sudo apt install mysql-server
    
  2. Потвърдете, че 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 помощната програма е най-лесният начин за конфигуриране на приложението. За да използвате скрипта за настройка, следвайте тези стъпки:

  1. Стартирайте mysql_secure_installation помощна програма за задаване на root парола и конфигуриране на други опции по подразбиране.

    sudo mysql_secure_installation
    
  2. Приложението пита дали да включи 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?
  3. При следващата подкана помощната програма иска парола за root акаунта. Задайте паролата и след това я въведете отново.

    Please set the password for root here.
    
    New password:
    
    Re-enter new password:
  4. Следните въпроси питат дали да се премахнат анонимни потребители, за да се разреши 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
  5. Когато бъдете подканени, презаредете 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!
  6. (По избор ) За отдалечен достъп до 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 потребител и създайте нов потребителски акаунт, следвайте тези стъпки:

  1. Използвайте sudo mysql команда за достъп до базата данни. MySQL удостоверява root потребителя въз основа на техните идентификационни данни на root, когато влизат локално, така че не се изисква парола. Друга възможност е да получите достъп до root акаунта, като използвате sudo mysql -u root -p , заедно с root парола.

    sudo mysql
    
  2. 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>
  3. За да потвърдите, че MySQL работи правилно, използвайте SHOW DATABASES команда за показване на всички бази данни.

    SHOW DATABASES;
    
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | mysql              |
    | performance_schema |
    | sys                |
    +--------------------+
    4 rows in set (0.01 sec)
  4. Създайте нов потребител с помощта на 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';
    
  5. Предоставете достъп на новия потребител с помощта на 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;
    
  6. За да излезете от подканата на MySQL, въведете exit .

    exit
    

Как да използвам MySQL

MySQL използва стандартен SQL синтаксис за всички свои команди. Стъпките в този раздел демонстрират как да изпълнявате основни задачи в MySQL, като създаване на бази данни, таблици и добавяне на данни. За пълна информация как да използвате MySQL, вижте Справочното ръководство за MySQL. За кратко, но задълбочено въведение, опитайте урока за MySQL.

Създаване на база данни

  1. За да създадете база данни, влезте в MySQL, като използвате акаунт с CREATE привилегии. Заменете mysqlusername със създаденото от вас потребителско име.

    mysql -u mysqlusername -p
    
  2. Създайте нова база данни с помощта на CREATE DATABASE команда. Заменете newdatabasename с желаното име за вашата база данни.

    CREATE DATABASE newdatabasename;
    
    Query OK, 1 row affected (0.00 sec)
  3. За да потвърдите, че новата база данни е създадена правилно, използвайте SHOW DATABASES .

    SHOW DATABASES;
    
    +--------------------+
    | Database           |
    +--------------------+
    ...
    | newdatabasename   |
    ...
    +--------------------+
    5 rows in set (0.00 sec)
  4. Посочете базата данни, с която искате да работите, като използвате USE команда. Заменете newdatabasename с името на базата данни, която току-що създадохте.

    USE newdatabasename;
    
    Database changed
    Забележка Можете също да използвате USE команда, когато имате повече от една база данни и искате да превключвате между тях.
  5. За да разберете името на текущата база данни, използвайте 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) .

Преди да създадете каквито и да е таблици, важно е да вземете решение за схема за базата данни. Схемата описва какво представлява всяка таблица, какви данни се съхраняват във всяка таблица и как се свързват таблиците. За да създадете таблица, следвайте тези стъпки:

  1. Докато сте влезли в MySQL, превключете към базата данни, където искате да добавите таблицата.

    use newdatabasename;
    
  2. Използвайте 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)
  3. За да потвърдите, че таблицата вече съществува, използвайте SHOW TABLES команда.

    SHOW TABLES;
    
    +----------------------------+
    | Tables_in_newdatabasename |
    +----------------------------+
    | newtablename              |
    +----------------------------+
    1 row in set (0.00 sec)
  4. За да прегледате структурата на таблицата и да проверите списъка с полета, използвайте 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)
  5. Ако таблицата вече не е необходима, изтрийте я с помощта на DROP TABLE команда.

    Внимание Когато дадена таблица бъде изпусната, всички данни в нея се губят и не могат да бъдат възстановени.
    DROP TABLE newtablename;
    

Добавяне и извличане на данни

Основният начин за вмъкване на нов ред данни в таблица е с INSERT команда.

  1. За да добавите ред, използвайте 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)
  2. За да извлечете данни, използвайте 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)
  3. Възможно е също да изберете само редове, отговарящи на определени критерии, например, когато колона е зададена на определена стойност. Използвайте 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)
  4. За таблици с много колони често е по-лесно да се ограничи информацията, която се показва. За да изберете само определени колони за всеки ред, посочете имената на колоните вместо * символ.

    SELECT column1, column4 FROM newtablename;
    
    +---------+---------+
    | column1 | column4 |
    +---------+---------+
    | value1  |     123 |
    | value2  |     123 |
    +---------+---------+
    2 rows in set (0.00 sec)
  5. За да промените ред в таблица, използвайте 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
  6. 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

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Забележка:Преобразуване на масив в низ

  2. DATABASE() – Вземете текущото име на базата данни в MySQL

  3. INSERT ... ПРИ АКТУАЛИЗИРАНЕ НА ДУБЛИРАН КЛЮЧ с КЪДЕ?

  4. Ред за изпълнение на MySQL заявка/клауза

  5. Как да преномерирате първичния индекс