Характерна особеност на MySQL е собствената му сигурност, разчитаща на външна защита. Като модерна, пълнофункционална и ефективна система за управление на база данни, MySQL има свои собствени инструменти за управление на потребителите и техния достъп до ресурсите, които контролира.
Ако не знаете правилното потребителско име и парола, достъпът до базата данни чрез MySQL е много труден.
В нормален хостинг режим това е достатъчно. Непредвидени ситуации, хакерски атаки и други проблеми са въпрос на външна системна администрация и услуги за сигурност. Тази концепция стана традиционна и практически не се обсъжда.
Инсталирайте MySQL сървър и потребителски root
В каквато и операционна среда да е инсталирана системата за управление на базата данни, тя винаги има поне един потребител: root. Инсталирайте MySQL, създайте потребител с всички root права - без това, работете ссървърът не е възможен. Привилегиите на този потребител са достатъчни за:
- създайте и администрирайте нови потребители;
- създайте и управлявайте бази данни.
По принцип е възможно потребители без парола да съществуват в MySQL, но това е неприемливо.
Обща практика:
- сървър, инсталиран на собствен компютър, където може да се инсталира хостинг (локална опция);
- сървърът е на публичен хостинг в Интернет.
В първия случай е възможно да се работи със сървъра от командния ред и да се използва phpMyAdmin, във втория случай само phpMyAdmin или подобен инструмент, но командният ред може да бъде достъпен чрез отдалечен SSH достъп.
Собствени административни инструменти
Усещането за родство със семейството Unixoid и с миналото от сървърите на Apache е отличителен белег на MySQL: create user е команден ред със странен синтаксис. За професионалистите, работещи с Linux и подобни системи, това е колкото познато, толкова и диво в очите на потребителите на Windows, които никога не са „влезли в реалния живот“.
Създаването на потребител започва със стартиране на командния ред на сървъра. В среда на Windows това се прави по следния начин.
Първо (1) трябва да стартирате командния ред като администратор, след това отидете в папката, където се намира MySQL (2), след товастартирайте самия сървър (3):
mysql -u… -p
тук "-u…" и "-p" са ключове, които сочат към името "…"=root (или друго име) и неговата парола. По принцип потребителят може да не е root, но има "root" (административни) права.
Важно: сървърът всъщност винаги работи, тук mysql -u… -p е командата за достъп до сървъра, а не за стартирането му.
В Linux среда и подобни системи такава команда е "родно" действие и по правило се определя чрез просто стартиране на mysqld на правилното място (на правилния път), това трябва да се провери с администратора. Тук обикновено има различно име: не mysql, а mysqld. Също така тук това действие не винаги е достъпно за всички потребители (на операционната система, а не на MySQL сървъра). За разлика от Windows, в Linuxoids редът и сигурността са естествено и неподлежащо на договаряне изискване, което винаги се третира по цивилизован начин.
Във всеки случай, след като mysql стартира, той ще обяви това с подкана (4):
mysql>
и ще бъде възможно да се работи както с потребители, така и с бази данни.
Забележка. Когато инсталирате в среда на Windows, всичко: Apache, MySQL, PHP, phpMyAdmin може да бъде настроено на пътища по подразбиране, но се препоръчва използването на по-компактни и по-близки места за тези важни инструменти:
- c:\SCiA\Apache;
- c:\SCiA\PHP;
- c:\SCiA\MySQL;
- …
- c:\SCiB\localhost\www\phpMyAdmin;
- c:\SCiB\site1\www;
- c:\SCiB\site2\www;
- …
- c:\SCiB\siteN\www\.
Тази логика не само ще опрости администрирането, но и ще разшири способността на разработчика да се придвижва между версиите на продукта и да управлява тяхната функционалност.
Работа на командния ред на MySQL
След като сървърът отговори и предостави своя команден ред, потребителите могат да бъдат създадени и да им бъдат присвоени разрешения.
В този пример командата create user създаде потребителя Petrov с парола 123DFG. Ако се направи грешка при въвеждане на команда, сървърът предлага да я коригира, но е по-добре никога да не правите грешки, когато работите на командния ред!
Следната команда предоставя всички привилегии дава всички права за всичко. Командата flush може да бъде пропусната, но тя „извади“буфера на командите, тоест коригира тяхното изпълнение.
MySQL: създайте потребител и дайте права на базата данни
Команда, използвана в примера:
ПРЕДОСТАВЯТЕ ВСИЧКИ ПРИВИЛЕГИИ НА. НА 'Petrov'@'localhost';
действително предоставя на потребителя Petrov достъп до всички бази данни (първа звездичка) до всички таблици (втора звездичка).
Като общо правило на MySQL, създаването на потребител е:
GRANT [тип привилегия] ON [име на база данни].[име на таблица] НА '[user]'@'localhost';
Разрешени са следните привилегии:
- ВСИЧКИ ПРИВИЛЕГИИ - всички права.
- CREATE - правото да създавате нови таблици/бази данни.
- DROP - правото за премахване на таблици/бази от данни.
- DELETE - правото за изтриване на информация в таблици.
- INSERT - правото за запис на информация в таблици.
- SELECT - правото за четене на информация от таблици.
- UPDATE - правото за актуализиране на информация в таблици.
- ОПЦИЯ ЗА ПРЕДОСТАВЯНЕ - правото да работите с привилегиите на други потребители.
От практическа гледна точка, в MySQL "създаване на потребител" предполага три опции за права:
- всички права за всички бази данни и всички потребители;
- четете и пишете;
- само за четене.
Рядко се изискват други опции за предоставяне на права. В средата на Linux има много повече основания за "законна" свобода (и необходимост), но там има много повече възможности, отколкото в Windows.
Обратната операция на MySQL "създаване на потребител" е drop.
пуснете потребителя 'Petrov'@'localhost';
След изпълнението на тази команда, Петров вече няма да бъде потребител и неговите привилегии ще бъдат загубени. За да промените привилегиите, използвайте командата:
ОТМЕНИ [привилегия] НА [DB].[Таблица] КЪМ '[user]'@'localhost';
Обикновеното действие в MySQL е да създадете потребител или да го изтриете, но промяната на привилегиите също е валидна операция (рядко се изисква).
Използване на phpMyAdmin
Има много реализации на този прекрасен инструмент. В зависимост от използваната версия на Apache, PHP и MySQL, често отнема много време, за да се намери правилната версия на този продукт, но след като phpMyAdmin бъде инсталиран успешно, потребителят има много удобни функции и удобнаинтерфейс.
Използвайки phpMyAdmin, можете да кажете на MySQL да създаде потребител за всеки хост и да управлява съществуващите потребители по почти хирургически начини.
phpMyAdmin не е единственият инструмент с удобен, интуитивен и богат на функции интерфейс, но е най-популярният инструмент за администриране на MySQL сървъри.
Относно командния ред и сигурността
Разбира се, използването на командния ред на MySQL е непривлекателно упражнение, но трябва да се има предвид, че в някои случаи само командният ред на сървъра може да запази базата данни или потребителя, да осигури импортиране или експортиране на информация.
Софтуерните версии се развиват толкова бързо, че разработчиците просто нямат време да комбинират функциите например на PHP и MySQL, MySQL и phpMyAdmin. Ако нещо се случи, командният ред винаги ще спаси деня.
Никога не трябва да забравяме: администрирането на MySQL е само за достъп до неговите бази данни и чрез неговата функционалност. Файловете на базата данни са отворени за достъп извън MySQL. Външното осигуряване на MySQL и ресурсите, които контролира, е реална и важна нужда.