За да започнете да редактирате привилегиите в 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 да:
GRANTPRIVILEGESот тип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)