MySQL е популярна система за управление на бази данни, използвана за уеб и сървърни приложения. Въпреки това, MySQL вече не е в хранилищата на CentOS и MariaDB се превърна в предлаганата система за бази данни по подразбиране. MariaDB се счита за заместител на MySQL и би бил достатъчен, ако просто се нуждаете от система за база данни като цяло. Вижте нашето ръководство за MariaDB в CentOS 7 за инструкции за инсталиране.
Ако все пак предпочитате MySQL, това ръководство ще ви представи как да го инсталирате, конфигурирате и управлявате на Linode, работещ с CentOS 7.
Големите MySQL бази данни могат да изискват значително количество памет. Поради тази причина препоръчваме да използвате Linode с висока памет за такива настройки.
Забележка Това ръководство е написано за потребител без root права. Командите, които изискват повишени привилегии, имат префикс сsudo
. Ако не сте запознати сsudo
команда, можете да проверите нашето ръководство за потребители и групи.
Преди да започнете
-
Уверете се, че сте следвали ръководствата Първи стъпки и Защита на вашия сървър и че името на хоста на Linode е зададено.
За да проверите името на хоста си, изпълнете:
hostname hostname -f
Първата команда трябва да показва вашето кратко име на хост, а втората трябва да показва пълното ви име на домейн (FQDN).
-
Актуализирайте системата си:
sudo yum update
-
Ще ви трябва
wget
за да завършите това ръководство. Може да се инсталира по следния начин:yum install wget
Инсталирайте MySQL
MySQL трябва да бъде инсталиран от хранилището на общността.
-
Изтеглете и добавете хранилището, след което актуализирайте.
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm yum update
-
Инсталирайте MySQL както обикновено и стартирайте услугата. По време на инсталацията ще бъдете попитани дали искате да приемете резултатите от GPG проверката на .rpm файла. Ако не се появи грешка или несъответствие, въведете
y
.sudo yum install mysql-server sudo systemctl start mysqld
MySQL ще се свърже с localhost (127.0.0.1) по подразбиране. Моля, вижте нашето ръководство за отдалечен достъп до MySQL за информация относно свързването с вашите бази данни чрез SSH.
Забележка Разрешаването на неограничен достъп до MySQL на публичен IP не се препоръчва, но можете да промените адреса, който слуша, като променитеbind-address
параметър в/etc/my.cnf
. Ако решите да свържете MySQL към вашия публичен IP адрес, трябва да приложите правила за защитната стена, които позволяват връзки само от конкретни IP адреси.
Harden MySQL сървър
-
Стартирайте
mysql_secure_installation
скрипт за справяне с няколко проблеми със сигурността при инсталация на MySQL по подразбиране.sudo mysql_secure_installation
Ще ви бъде даден избор да промените паролата за root на MySQL, да премахнете анонимни потребителски акаунти, да деактивирате влизането в root извън localhost и да премахнете тестови бази данни. Препоръчително е да отговорите yes
към тези опции. Можете да прочетете повече за скрипта в Справочното ръководство за MySQL.
ЗабележкаАко MySQL 5.7 е инсталиран, ще ви е необходима временната парола, създадена по време на инсталацията. Тази парола е отбелязана в
/var/log/mysql.log
файл и може бързо да бъде намерен с помощта на следната команда.sudo grep 'temporary password' /var/log/mysqld.log
Използване на MySQL
Стандартният инструмент за взаимодействие с MySQL е mysql
клиент, който се инсталира с mysql-server
пакет. MySQL клиентът се използва през терминал.
Root вход
-
За да влезете в MySQL като root потребител:
mysql -u root -p
-
Когато бъдете подканени, въведете root паролата, която сте задали при стартиране на скрипта mysql_secure_installation.
След това ще ви бъде представена заглавка за добре дошли и подкана за MySQL, както е показано по-долу:
mysql>
-
За да генерирате списък с команди за подканата на MySQL, въведете
\h
. След това ще видите:List of all MySQL commands: Note that all text commands must be first on line and end with ';' ? (\?) Synonym for `help'. clear (\c) Clear command. connect (\r) Reconnect to the server. Optional arguments are db and host. delimiter (\d) Set statement delimiter. NOTE: Takes the rest of the line as new delimiter. edit (\e) Edit command with $EDITOR. ego (\G) Send command to mysql server, display result vertically. exit (\q) Exit mysql. Same as quit. go (\g) Send command to mysql server. help (\h) Display this help. nopager (\n) Disable pager, print to stdout. notee (\t) Don't write into outfile. pager (\P) Set PAGER [to_pager]. Print the query results via PAGER. print (\p) Print current command. prompt (\R) Change your mysql prompt. quit (\q) Quit mysql. rehash (\#) Rebuild completion hash. source (\.) Execute an SQL script file. Takes a file name as an argument. status (\s) Get status information from the server. system (\!) Execute a system shell command. tee (\T) Set outfile [to_outfile]. Append everything into given outfile. use (\u) Use another database. Takes database name as argument. charset (\C) Switch to another charset. Might be needed for processing binlog with multi-byte charsets. warnings (\W) Show warnings after every statement. nowarning (\w) Don't show warnings after every statement. For server side help, type 'help contents' mysql>
Създайте нов потребител и база данни на MySQL
-
В примера по-долу,
testdb
е името на базата данни,testuser
е потребителят иpassword
е паролата на потребителя.create database testdb; create user 'testuser'@'localhost' identified by 'password'; grant all on testdb.* to 'testuser' identified by 'password';
Можете да съкратите този процес, като създадете потребителя while задаване на разрешения за база данни:
create database testdb; grant all on testdb.* to 'testuser' identified by 'password';
-
След това излезте от MySQL.
exit
Създайте примерна таблица
-
Влезте отново като
testuser
.mysql -u testuser -p
-
Създайте примерна таблица, наречена клиенти . Това създава таблица с поле за идентификатор на клиента от типа INT за цяло число (автоматично увеличено за нови записи, използвано като първичен ключ), както и две полета за съхранение на името на клиента.
use testdb; create table customers (customer_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, first_name TEXT, last_name TEXT);
-
След това излезте от MySQL.
exit
Нулиране на MySQL Root парола
Ако забравите вашата root MySQL парола, тя може да бъде нулирана.
-
Спрете текущия екземпляр на MySQL сървър, след което го рестартирайте с опция да не питате за парола.
sudo systemctl stop mysqld sudo mysqld_safe --skip-grant-tables &
-
Свържете се отново с MySQL сървъра с MySQL root акаунта.
mysql -u root
-
Използвайте следните команди, за да нулирате паролата на root. Заменете
password
със силна парола.use mysql; update user SET PASSWORD=PASSWORD("password") WHERE USER='root'; flush privileges; exit
-
След това рестартирайте MySQL.
sudo systemctl start mysqld
Настройте MySQL
MySQL Tuner е Perl скрипт, който се свързва с работещ екземпляр на MySQL и предоставя препоръки за конфигурация въз основа на работното натоварване. В идеалния случай MySQL екземплярът трябва да работи поне 24 часа, преди да стартира тунера. Колкото по-дълго е работил екземплярът, толкова по-добър съвет ще даде MySQL Tuner.
-
Изтеглете MySQL Tuner във вашата домашна директория.
wget https://raw.githubusercontent.com/major/MySQLTuner-perl/master/mysqltuner.pl
-
За да го стартирате:
perl ./mysqltuner.pl
Ще бъдете помолени за името и паролата на root потребителя на MySQL. Резултатът ще покаже две области на интерес:Общи препоръки и Променливи за коригиране.
MySQL Tuner е отлична отправна точка за оптимизиране на MySQL сървър, но би било разумно да извършите допълнителни изследвания за конфигурации, съобразени с приложението(ата), използващо MySQL на вашия Linode.
Все още имате няколко въпроса?Присъединете се към нашата общност и публикувайте вашите въпроси за други ентусиасти на Linode и Linux, за да ви помогнат.
Свързани въпроси:
- Как да инсталирам phpMyAdmin на Centos7
- Как мога да настроя стек LAMP/LEMP на моя Linode?
- Как да стартирам както MySQL, така и MongoDB?
Повече информация
Може да пожелаете да се консултирате със следните ресурси за допълнителна информация по тази тема. Въпреки че те са предоставени с надеждата, че ще бъдат полезни, моля, имайте предвид, че не можем да гарантираме за точността или навременността на външно хостваните материали.
- Справочно ръководство за MySQL 5.6
- Ръководство за PHP MySQL
- Примери за Perl DBI за DBD::mysql
- Ръководство за потребителя на MySQLdb
- Урок за MySQL Tuner