Како да креирате нов корисник и да доделите дозволи во MySQL
Вовед
најпопуларната база на податоци со отворен код во светот.
Ова упатство прикажува како да креирате нов MySQL корисник и да му ги дадете дозволите потребни за извршување на различни дејства.
Предуслови
За да го следите овој водич, ќе ви треба пристап до базата на податоци MySQL. Овој водич претпоставува дека оваа база на податоци е инсталирана на виртуелен приватен сервер кој работи на Ubuntu 20.04, иако принципите што ги наведува треба да бидат применливи без оглед на тоа како пристапувате до вашата база на податоци.
Ако немате пристап до базата на податоци MySQL и сакате сами да ја поставите, можете да следите еден од нашите водичи за Како да инсталирате MySQL. Повторно, без оглед на основниот оперативен систем на вашиот сервер, методите за создавање нов MySQL корисник и да му се дадат дозволи генерално ќе бидат исти.
Алтернативно можете да ја вртите базата на податоци на MySQL управувана од добавувач на облак. За детали за тоа како да се врти базата на податоци управувана од DigitalOcean, видете ја нашата документација за производот.
Ве молиме имајте предвид дека сите делови од пример на команди што треба да ги промените или приспособите ќе бидат означени вака
низ ова упатство.
Креирање на нов корисник
По инсталацијата, MySQL создава root корисничка сметка која можете да ја користите за управување со вашата база на податоци. Овој корисник има целосни привилегии над MySQL серверот, што значи дека има целосна контрола врз секоја база на податоци, табела, корисник итн. Поради ова, најдобро е да избегнете користење на оваа сметка надвор од административните функции. Овој чекор опишува како да го користите root корисникот на MySQL за да креирате нова корисничка сметка и да му дадете привилегии.
Во системите на Ubuntu што користат MySQL 5.7
(и подоцнежните верзии), корисникот на root MySQL е поставен да се автентицира користејќи го приклучокот auth_socket
стандардно наместо со лозинка. Овој приклучок бара името на корисникот на оперативниот систем кој го повикува клиентот MySQL да се совпаѓа со името на корисникот MySQL наведен во командата. Ова значи дека треба да ѝ претходите на командата mysql
со sudo
за да ја повикате со привилегиите на root корисникот на Ubuntu за да добиете пристап до корисникот root MySQL:
- sudo mysql
Забелешка: Ако вашиот root корисник на MySQL е конфигуриран да се автентицира со лозинка, ќе треба да користите друга команда за да пристапите до школката на MySQL. Следното ќе го изврши вашиот MySQL клиент со редовни кориснички привилегии, а вие ќе стекнете администраторски привилегии во базата на податоци само со автентикација со точната лозинка:
- mysql -u root -p
Откако ќе имате пристап до промптот за MySQL, можете да креирате нов корисник со изјава CREATE USER
. Тие ја следат оваа општа синтакса:
- CREATE USER 'username'@'host' IDENTIFIED WITH authentication_plugin BY 'password';
По СОЗДАДЕТЕ КОРИСНИК
, одредувате корисничко име. Веднаш потоа следи знакот @
, а потоа името на домаќинот од кое ќе се поврзе овој корисник. Ако планирате да пристапите до овој корисник само локално од вашиот Ubuntu сервер, можете да наведете localhost
. Завиткувањето и на корисничкото име и на домаќинот во единечни наводници не е секогаш неопходно, но тоа може да помогне да се спречат грешките.
Имате неколку опции кога станува збор за изборот на приклучокот за автентикација на вашиот корисник. Приклучокот auth_socket
споменат претходно може да биде удобен, бидејќи обезбедува силна безбедност без да бара валидните корисници да внесат лозинка за пристап до базата на податоци. Но, исто така, спречува далечински врски, што може да ги комплицира работите кога надворешните програми треба да комуницираат со MySQL.
Како алтернатива, можете целосно да го изоставите делот WITH authentication_plugin
од синтаксата за корисникот да се автентицира со стандардниот приклучок на MySQL, caching_sha2_password
. Документацијата MySQL го препорачува овој приклучок за корисници кои сакаат да се логираат со лозинка поради неговите силни безбедносни карактеристики.
Извршете ја следнава команда за да креирате корисник кој се автентицира со caching_sha2_password
. Променете го sammy
на претпочитаното корисничко име и лозинка
на силна лозинка по ваш избор:
- CREATE USER 'sammy'@'localhost' IDENTIFIED BY 'password';
Забелешка: постои познат проблем со некои верзии на PHP што предизвикува проблеми со caching_sha2_password
. Ако планирате да ја користите оваа база на податоци со PHP апликација - phpMyAdmin, на пример - можеби ќе сакате да креирате корисник кој ќе се автентицира со постариот, иако сè уште безбеден, додаток mysql_native_password
наместо тоа:
- CREATE USER 'sammy'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
Ако не сте сигурни, секогаш можете да креирате корисник кој автентицира со caching_sha2_plugin
и потоа ИЗМЕНИ
подоцна со оваа команда:
- ALTER USER 'sammy'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
Откако ќе го креирате вашиот нов корисник, можете да му ги дадете соодветните привилегии.
Давање кориснички дозволи
Општата синтакса за доделување кориснички привилегии е како што следува:
- GRANT PRIVILEGE ON database.table TO 'username'@'host';
Вредноста PRIVILEGE
во овој пример синтакса дефинира какви дејства му е дозволено да ги изврши корисникот на наведената база на податоци
и табела
. Можете да доделите повеќе привилегии на ист корисник во една команда со одвојување на секоја со запирка. Можете исто така да доделите кориснички привилегии на глобално ниво со внесување ѕвездички (*
) наместо имињата на базата на податоци и табелите. Во SQL, ѕвездичките се специјални знаци кои се користат за претставување на \сите бази на податоци или табели.
За илустрација, следнава команда му дава на корисникот глобални привилегии за бази на податоци, табели и корисници CREATE
, ALTER
и DROP
, како и на напојување за INSERT
, UDATE
и DELETE
податоци од која било табела на серверот. Исто така, му дава можност на корисникот да бара податоци со SELECT
, да создава странски клучеви со клучниот збор РЕФЕРЕНЦИ
и да врши операции FLUSH
со RELOAD
. Сепак, на корисниците треба да им ги дадете само дозволите што им се потребни, затоа слободно приспособете ги привилегиите на вашите сопствени корисници по потреба.
Целосната листа на достапни привилегии можете да ја најдете во официјалната документација на MySQL.
Извршете ја оваа изјава GRANT
, заменувајќи го sammy
со вашето сопствено име на MySQL корисник, за да му ги дадете овие привилегии на вашиот корисник:
- GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES, RELOAD on *.* TO 'sammy'@'localhost' WITH GRANT OPTION;
Имајте предвид дека оваа изјава вклучува и СО ГРАНТ ОПЦИЈА
. Ова ќе му овозможи на вашиот MySQL корисник да даде какви било дозволи што ги има на други корисници на системот.
Предупредување: некои корисници можеби ќе сакаат да му дадат на својот MySQL корисник привилегијата СИТЕ ПРИВИЛЕГИ
, што ќе им обезбеди широки привилегии за суперкорисници слични на root на корисникот привилегии, на пример:
- GRANT ALL PRIVILEGES ON *.* TO 'sammy'@'localhost' WITH GRANT OPTION;
Ваквите широки привилегии не треба лесно да се даваат, бидејќи секој што има пристап до овој корисник на MySQL ќе има целосна контрола врз секоја база на податоци на серверот.
Многу водичи предлагаат да се изврши командата FLUSH PRIVILEGES
веднаш по изјавата CREATE USER
или GRANT
со цел повторно да се вчитаат табелите за грантови за да се осигура дека новите привилегии се ставаат во сила:
- FLUSH PRIVILEGES;
Сепак, според официјалната документација на MySQL, кога индиректно ги менувате табелите за грантови со изјава за управување со сметката како GRANT
, базата на податоци ќе ги превчита табелите за грантови веднаш во меморијата, што значи дека FLUSH PRIVILEGES Командата
не е неопходна во нашиот случај. Од друга страна, неговото работење нема да има негативен ефект врз системот.
Ако треба да ја отповикате дозволата, структурата е речиси идентична со нејзиното доделување:
- REVOKE type_of_permission ON database_name.table_name FROM 'username'@'host';
Имајте предвид дека при одземање на дозволите, синтаксата бара да користите FROM
, наместо TO
што сте го користеле при доделувањето на дозволите.
Можете да ги прегледате тековните дозволи на корисникот со извршување на командата SHOW GRANTS
:
- SHOW GRANTS FOR 'username'@'host';
Исто како што можете да избришете бази на податоци со DROP
, можете да користите DROP
за да избришете корисник:
- DROP USER 'username'@'localhost';
Откако ќе го креирате вашиот MySQL корисник и ќе му доделите привилегии, можете да излезете од клиентот MySQL:
- exit
Во иднина, за да се најавите како нов корисник на MySQL, ќе користите команда како следнава:
- mysql -u sammy -p
Знамето -p
ќе предизвика клиентот MySQL да ве праша за лозинката на вашиот MySQL корисник за да се автентицира.
Заклучок
Следејќи го ова упатство, научивте како да додавате нови корисници и да им доделите различни дозволи во базата на податоци MySQL. Оттука, може да продолжите да истражувате и експериментирате со различни поставки за дозволи за вашиот MySQL корисник, или можеби ќе сакате да дознаете повеќе за некои конфигурации на MySQL на повисоко ниво.
За повеќе информации за основите на MySQL, можете да ги проверите следните упатства:
- Како да креирате и управувате со бази на податоци во MySQL и MariaDB на облак сервер
- Како да поставите репликација во MySQL
- Како да ја конфигурирате репликацијата на групата MySQL на Ubuntu 20.04