За да започнете да редактирате привилегиите в MySQL, първо трябва да влезете във вашия сървър и след това да се свържете с mysql
клиент. Обикновено ще искате да се свържете с root
или който и да е акаунтът ви е основен, първоначален акаунт на „суперпотребител“, който има пълен достъп през цялата инсталация на MySQL.
Обикновено root
потребителят ще получи парола за удостоверяване при инсталиране на MySQL, но ако това не е така, трябва да предприемете стъпки за повишаване на сигурността си, като добавите root
пароли, както е илюстрирано в официалната документация.
Свързване с инструмента за команден ред MySQL
За този пример ще приемем root
е основният акаунт в MySQL. За да започнете да използвате инструмента за команден ред MySQL (mysqlcli
), свържете се с вашия сървър като root
потребител, след което пуснете mysql
команда:
$ mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 112813
Server version: 5.5.43-0ubuntu0.14.04.1 (Ubuntu)
[...]
mysql>
Ако успеете, ще видите някакъв изход за вашата MySQL връзка и ще бъдете обърнати надолу към mysql
подкана.
Забележка:В случай, че не можете да се свържете директно със сървъра като root
потребител преди да се свърже с mysql
, можете да посочите потребителя, който искате да свържете като като добавите --user=
флаг:
$ mysql --user=username
Предоставяне на привилегии
Сега, когато сте в mysqlcli
подкана, трябва само да издадете GRANT
команда с необходимите опции, за да приложите съответните разрешения.
Типове привилегии
GRANT
командата е в състояние да прилага голямо разнообразие от привилегии, всичко от възможността за CREATE
таблици и бази данни, четете или пишете FILES
и дори SHUTDOWN
сървърът. Има широк набор от флагове и опции, достъпни за командата, така че може да пожелаете да се запознаете с това какво GRANT
всъщност можете да направите, като прегледате официалната документация.
Привилегии, специфични за базата данни
В повечето случаи ще предоставяте привилегии на потребителите на MySQL въз основа на конкретната database
този акаунт трябва да има достъп до. Това е обичайна практика, например, за всяка уникална MySQL database
на сървър, за да има свой собствен уникален user
свързан с него, така че само един единствен user
има достъп за удостоверяване до една единствена database
и обратно.
За GRANT ALL
привилегии на user
, което позволява на този потребител пълен контрол върху конкретна database
, използвайте следния синтаксис:
mysql> GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'localhost';
С тази команда казахме на MySQL да:
GRANT
PRIVILEGES
от типALL
(така всичко разбира се). Забележка:Повечето съвременни инсталации на MySQL не изискват незадължителнитеPRIVILEGES
ключова дума.- Тези привилегии са за
database_name
и се отнася за всички таблици на тази база данни, която е обозначена с.*
това следва. - Тези привилегии се присвояват на
username
когато товаusername
е свързан чрез локално, както е посочено от@'localhost'
. За да посочите валиден хост, заменете'localhost'
с'%'
.
Вместо да предоставяте всички привилегии на цялата база данни, може би искате да дадете tolkien
възможността само за потребителя да чете данни (SELECT
) от authors
таблица на books
база данни. Това би било лесно да се постигне така:
mysql> GRANT ALL PRIVILEGES ON books.authors TO 'tolkien'@'localhost';
Създаване на друг супер потребител
Въпреки че не е особено защитен, в някои случаи може да пожелаете да създадете друг „супер потребител“, който има ВСИЧКИ привилегии във ВСИЧКИ бази данни на сървъра. Това може да се извърши подобно на по-горе, но чрез замяна на database_name
със заместващата звездичка:
mysql> GRANT ALL PRIVILEGES ON *.* TO 'tolkien'@'%';
Сега tolkien
има същите привилегии като root
по подразбиране акаунт, внимавайте!
Запазване на вашите промени
Като последна стъпка след всички актуализации на привилегиите на потребителя, не забравяйте да запазите промените, като издадете FLUSH PRIVILEGES
команда от mysql
подкана:
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.01 sec)