mysql create user how create new user mysql
Този урок обяснява командата MySQL Create User с различни механизми за оторизация, управление на пароли, опции за ограничаване на ресурсите и т.н.:
Командата MySQL CREATE USER се използва за създаване на нови потребители и предоставяне на подробен достъп до бази данни / таблици и др.
Множество хора използват екземпляр на MySQL сървър с различни нива на достъп. Например, някои потребители имат достъп за четене до конкретна база данни, по същия начин някои могат да имат достъп за четене и запис до определена база данни и т.н.
Командата CREATE USER е по-често използвана от администраторите на MySQL за създаване на потребители за екземплярите на MySQL Server и предоставяне на различни разрешения, използвайки заявката GRANT.
Какво ще научите:
- Моята SQL команда CREATE USER
- Заключение
Моята SQL команда CREATE USER
Командата CREATE USER се използва за създаване или добавяне на нови акаунти към екземпляри на MySQL сървър.
Тази команда обикновено е достъпна / използва се от администраторите на MySQL за управление на достъпа до различни потребители на екземпляра на MySQL Server.
Докато създавате потребител с помощта на командата CREATE USER, можете да посочите
- Удостоверяване, което трябва да се използва при свързване с MySQL.
- Ограничение на ресурсите
- Свойства за управление на пароли: Изтичане на паролата, настройки за повторно използване на паролата.
- Заключване на акаунта: Новосъздадените акаунти ще бъдат или заключени, или отключени.
Акаунтите се създават в системната таблица на MySQL с име ‘Mysql.user’
как да отворите bin файл windows 10
Забележка: За да използвате командата CREATE USER, потребителят трябва да има привилегия CREATE_USER или да предостави разрешение за MySQL системна схема.
В най-простата форма синтаксисът за командата CREATE USER е както по-долу:
CREATE USER (IF NOT EXISTS) '{username}'@'{hostname}' IDENTIFIED BY '{passwordString}';
Забележете незадължителното АКО НЕ СЪЩЕСТВУВА . Това гарантира, че ако потребителят вече съществува, резултатът от SQL заявката просто ще изведе предупреждение и няма грешка. Тук, „Потребителско име“ се отнася до действителното потребителско име, с което потребителят ще се свърже и „Име на хост“ се отнася до хоста, от който потребителят ще се свърже.
Моля обърнете внимание, ако полето „име на хоста“ е оставено празно, тогава стойността за хоста се приема за „%“, което ще позволи на всеки хост да се свърже с посоченото потребителско име.
Създайте потребител с този синтаксис:
CREATE USER 'userx'@'localhost' IDENTIFIED BY 'password';
С горното изявление създадохме потребител с потребителско име ‘userx’ и парола като ‘парола’. Името на хоста е localhost, тъй като ние създаваме потребителите на нашия локален екземпляр MySQL.
Нека опитаме да направим запитване към таблицата mysql.users, за да видим записа за потребителя, който създадохме.
SELECT * from mysql.user
Ще видите резултата, както е показано по-долу:
Първите 4 потребители са предварително създадени по време на самата инсталация на MySQL, докато последният запис е потребителят, който сме създали - т.е. ‘userx’.
Важно е да се отбележи, че на този етап току-що създадохме потребител, без да му даваме никакви права по отношение на създаването / актуализирането / заявката на база данни и т.н.
Нека опитаме да влезем с този потребител с клиента MySQL.
Можете да използвате терминала, за да се свържете с командата по-долу:
$ /usr/local/mysql/bin/mysql -u userx -p
При подкана за парола въведете паролата като „парола“.
Enter password: Welcome to the MySQL monitor. Commands end with ; or g. Your MySQL connection id is 33 Server version: 8.0.20 MySQL Community Server - GPL Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or 'h' for help. Type 'c' to clear the current input statement. mysql>
Сега ще създадем нова база данни, използвайки ключовата дума CREATE DATABASE.
mysql> create database student; ERROR 1044 (42000): Access denied for user 'userx'@'localhost' to database 'student'
Както можете да видите по-горе, генерира се съобщение за грешка, което казва, че потребителят ‘userx’ няма достъп за създаване на БАЗА ДАННИ Да видим други опции, които биха могли да се използват с командата CREATE USER.
СЪЗДАЙТЕ ПОТРЕБИТЕЛ с приставка за удостоверяване
‘Auth плъгин’ указва опция за удостоверяване и се съхранява в колоната на плъгина на таблицата mysql.user. MySQL поддържа няколко приставки за удостоверяване.
Някои поддържани приставки са както по-долу:
- Хеширане на собствената парола на MySQL: Хеширането на собствената парола не е нищо друго освен използването на SHA1 за съхраняване на стойности на пароли в таблицата mysql.users. Този механизъм се счита за по-малко сигурен от хеширането на пароли SHA1.
- Хеширане на парола SHA2 256: Това е приставката за удостоверяване по подразбиране, използвана от MySQL. т.е. дори ако не е посочена приставка за удостоверяване с команда CREATE_USER, по подразбиране тази приставка ще бъде приложена.
- Външно удостоверяване чрез LDAP: LDAP обикновено се използва за свързване на MySQL удостоверяване с активната директория на организацията. Например, удостоверяване с помощта на Google SSO, OAuth или Microsoft Outlook LDAP. Това изисква инсталиране на LDAP плъгин и от страна на MySQL. За повече подробности можете да се обърнете тук.
>> Вижте тук за пълен списък на поддържаните плъгини.
Нека опитаме да създадем потребител с плъгин за автентичност по подразбиране и плъгин за автентичност SHA2 и съответните им хеширани стойности в таблицата mysql.users Първо ще създадем потребител с удостоверяване по подразбиране, което е (SHA2), и нека видим какво се съхранява в mysql.user маса.
CREATE USER IF NOT EXISTS 'user-default'@'localhost' IDENTIFIED BY 'P@ssw0rd'
Нека да видим приставката за удостоверяване за този потребител „потребител по подразбиране“ в таблицата на mysql.users:
SELECT host,user,plugin,authentication_string from mysql.user where user='user-default'
Тук в authentication_string можете да видите неговата стойност SHA-256 за низа на паролата - ‘P @ ssw0rd’.
Нека сега създадем потребител с приставка за удостоверяване. ‘MySQL native password’ и вижте каква е стойността на приставката, която се съхранява.
CREATE USER IF NOT EXISTS 'user-sha1'@'localhost' IDENTIFIED WITH mysql_native_password BY 'P@ssw0rd'
SELECT host,user,plugin,authentication_string from mysql.user where user='user-sha1'
СЪЗДАЙТЕ ПОТРЕБИТЕЛ С Роля
MySQL също така предоставя назначаване на предварително дефинирани роли на нови потребители. Тези роли вече имат конфигуриран достъп до някои или всички бази данни (които също могат да бъдат персонализирани), например, може да се създаде роля, наречена „разработчик“, която може да присвои всички привилегии на база данни и по-късно можем да използваме същата роля, за да присвоим на нови потребители.
Нека да видим това с пример:
- Създайте роля с име разработчик
CREATE ROLE 'developer'
- Създайте база данни с име „тест“
CREATE DATABASE test
- Задайте привилегии за тестване на базата данни за ролята на „разработчик“
GRANT ALL ON test.* TO 'developer'
- Създайте потребител и задайте роля на разработчик
CREATE USER IF NOT EXISTS 'user-with-role'@'localhost' DEFAULT ROLE developer;
- Проверете дали потребителят може да създаде таблица в тестовата база данни
Нека опитаме да влезем с потребителя на име ‘user-with-role’ и ще се опитаме да създадем нова таблица в тестовата база данни.
$ /usr/local/mysql/bin/mysql -u user-with-role Welcome to the MySQL monitor. Commands end with ; or g. Your MySQL connection id is 44 Server version: 8.0.20 MySQL Community Server - GPL Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or 'h' for help. Type 'c' to clear the current input statement. mysql> use test; Database changed mysql> create table test_table(name varchar(20)); Query OK, 0 rows affected (0.07 sec)
СЪЗДАЙТЕ ПОТРЕБИТЕЛ С SSL / TLS
Създаването на потребител с опции SSL / TLS ще изисква и клиентът, и сървърът да имат инсталирани SSL сертификати. По подразбиране SSL не е конфигуриран за MySQL.
Следвайте тези стъпки за конфигуриране на SSL за екземпляр на MySQL сървър.
За да създадете потребител с активиран SSL, можете да използвате опцията REQUIRE SSL, докато създавате потребителя.
CREATE USER 'user-with-ssl'@'localhost' REQUIRE SSL;
По същия начин, създаването с помощта на X509 би очаквало клиентът / потребителят да се свърже, за да има валиден сертификат X509.
>> Вижте тук за да разберете повече за X509.
За да създадете потребител със сертификат X509, използвайте заявката по-долу:
CREATE USER 'user-with-x509'@'localhost' REQUIRE X509;
СЪЗДАЙТЕ ПОТРЕБИТЕЛ с опции за управление на пароли
Опциите за парола се използват за задаване на политика за паролата при създаване на потребител с помощта на командата CREATE USER.
# 1) Изтичане на паролата при влизане. Паролата изтича след първата употреба и подканва потребителите да променят паролата.
CREATE USER IF NOT EXISTS 'test'@'localhost' IDENTIFIED BY 'Password' PASSWORD EXPIRE;
# две) Изтичане на паролата след фиксиран интервал. Изтичането на паролата може да се конфигурира с конфигурирания интервал, например, 90 дни.
CREATE USER IF NOT EXISTS 'test'@'localhost' IDENTIFIED BY 'Password' PASSWORD EXPIRE INTERVAL 90 DAY;
# 3) Паролата се заключва след конфигурирани опити за повторен опит. Много пъти е желателно потребителският акаунт да се заключва (за конфигуриран период) след „n“ неправилни опити за повторен опит. В заявката по-долу потребителският акаунт ще бъде заключен за 2 дни след 5 неправилни опита.
CREATE USER 'test'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'Password' FAILED_LOGIN_ATTEMPTS 5 PASSWORD_LOCK_TIME 2;
# 4) Новата парола не трябва да бъде същата като конфигурираните предишни пароли.
В заявката по-долу новата парола, зададена от потребителите, не трябва да бъде същата като последните 2 пароли.
CREATE USER IF NOT EXISTS 'test'@'localhost' IDENTIFIED BY 'Password' PASSWORD EXPIRE PASSWORD HISTORY 2;
СЪЗДАЙТЕ ПОТРЕБИТЕЛ с Опции за ограничение на ресурсите
Ограниченията на ресурсите се изискват особено за производствени екземпляри на MySQL, за да се избегне затрупване на базата данни от заявки / заявки от един потребител и което би могло да повлияе на производителността на MySQL сървъра.
Можем да зададем ограниченията на ресурсите, като използваме 3 от тези опции по-долу:
# 1) MAX_QUERIES_PER_HOUR - Брой разрешени заявки за получаване за даден потребител на час.
CREATE USER 'user-with-resource-limits'@'localhost' WITH MAX_QUERIES_PER_HOUR 5
Да предположим, че ако потребителят се опита да надвиши повече от 5 заявки на час, сървърът MySQL ще изведе грешка като по-долу:
ERROR 1226 (42000): User 'user-with-resource-limits' has exceeded the 'max_questions' resource (current value: 5)
# 2) MAX_UPDATES_PER_HOUR - Брой разрешени заявки за актуализация за даден потребител на час.
CREATE USER 'user-with-resource-limits'@'localhost' WITH MAX_UPDATES_PER_HOUR 50
# 3) MAX_CONNECTIONS_PER_HOUR - Броят пъти, в които даден акаунт може да се свърже със сървъра на час.
CREATE USER 'user-with-resource-limits'@'localhost' WITH MAX_CONNECTIONS_PER_HOUR 50
# 4) MAX_USER_CONNECTIONS - Броят на едновременните връзки към екземпляра на MySQL сървър от дадения потребител.
CREATE USER 'user-with-resource-limits'@'localhost' WITH MAX_USER_CONNECTIONS 50
Моля, обърнете внимание, че всички горепосочени опции също могат да бъдат комбинирани, докато създавате потребител. Да предположим, че ако искаме да посочим MAX_QUERIES като 10 и MAX_UPDATES като 100, тогава можем да имаме една заявка CREATE_USER като:
CREATE USER 'user-with-resource-limits'@'localhost' WITH MAX_UPDATES_PER_HOUR 100 MAX_QUERIES_PER_HOUR 10
MySQL Актуализиране и изтриване на потребители
MySQL предоставя 2 важни команди - ALTER USER и DROP USER за промяна и изтриване на съществуващи потребители, съответно. Нека разберем и двете с помощта на примери.
ALTER ПОТРЕБИТЕЛ
MySQL ALTER USER се използва за актуализиране / модифициране на съществуващи потребителски акаунти на MySQL. Може да се използва,
- Актуализиране на ограниченията на ресурсите
- Задайте опции за парола
- Заключване и отключване на акаунти и др.
Нека да видим пример за използване на ALTER USER за отключване на заключен акаунт.
Създайте потребител в заключено състояние и след това го отключете с команда ALTER USER.
CREATE USER 'test'@'localhost'I DENTIFIED BY 'Password' ACCOUNT LOCK;
Сега, при влизане с този потребител, ще получим съобщение за заключен акаунт (тъй като потребителят е създаден в състояние на заключен акаунт).
$ /usr/local/mysql/bin/mysql -u test -p Enter password: ERROR 3118 (HY000): Access denied for user 'test'@'localhost'. Account is locked.
Използвайте заявката по-долу за отключване на потребителя с командата ALTER.
ALTER USER 'test'@'localhost' ACCOUNT UNLOCK
Влезте с потребителя с клиент MySQL:
$ /usr/local/mysql/bin/mysql -u test -p Enter password: Welcome to the MySQL monitor. Commands end with ; or g. Your MySQL connection id is 50 Server version: 8.0.20 MySQL Community Server - GPL Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or 'h' for help. Type 'c' to clear the current input statement. mysql>
КАПЕТЕ ПОТРЕБИТЕЛ
Командата MySQL DROP USER премахва един или повече съществуващи потребители и всички свързани с тях привилегии и дарения.
Моля, обърнете внимание, че няма да премахне / изтрие всички вмъкнати данни / таблици, създадени или актуализирани от потребителя, който се изтрива.
Ако някой се опита да изтрие несъществуващ потребител, командата DROP USER ще изведе грешка.
Нека създадем потребител и го изтрием с помощта на командата DROP:
CREATE USER 'test'@'localhost'; DROP USER 'test'@'localhost';
често задавани въпроси
В # 1) Какво представлява потребителят в MySQL?
Отговор: Потребителят в MySQL е акаунт / обект, който може да влезе в екземпляр на сървъра на MySQL и да извършва различни операции. Потребителят може да получи достъп въз основа на ролите или гранулиран достъп до една или повече бази данни и / или таблици.
В # 2) Как да проверявам различни потребители, свързани към MySQL?
Отговор: За да видите активните потребителски сесии на екземпляр на MySQL сървър, можете да изпълните командата на списъка на процеса, както е показано по-долу.
SHOW processlist;
Резултатът от тази команда ще покаже различни атрибути на сесиите на активния потребител, свързани по време на изпълнението на командата.
Примерен изход по-долу:
В # 3) Как да превключвам потребителите в MySQL?
Отговор: MySQL работи върху концепцията за потребителски сесии. Когато сте влезли с даден потребител, можете да планирате да прекратите сесията или да отворите сесия срещу нов потребител в нов прозорец или като нова връзка в клиенти на MySQL GUI като работна среда.
За да влезете с определен потребител от mysql клиент, можете да използвате синтаксиса по-долу:
mysql -u {userName} -p
След като напишете горната команда, след като натиснете Enter, ще бъдете подканени да въведете паролата за потребителя, посочен в полето {userName}. След като паролата бъде потвърдена, ще бъдете отведени в черупката / командния ред на MySQL.
За да влезете с отделен потребител, можете да прекратите текущата сесия, като въведете командата за изход и да влезете отново с друг потребител.
mysql> exit
Също така е възможно да имате множество връзки към екземплярите на MySQL сървър за различни потребители. Можете просто да отворите нов раздел / прозорец за командния ред и да използвате същата команда, за да влезете с друг потребител.
mysql -u {userName2} -p
В # 4) Как да направя потребител на MySQL само за четене?
Отговор: MySQL предоставя изчерпателен механизъм за предоставяне на подробен достъп до бази данни или таблици. Можете да предоставите различни видове достъп като SELECT, UPDATE, INSERT и др. До една или много бази данни или таблици.
За да предоставите само на потребителя достъп само за четене, можете да предоставите SELECT достъп до база данни (използвайки * за всички таблици или изрично споменавайки името на таблицата според изискването)
Нека разберем това с помощта на пример по-долу:
Създаваме потребител на име „повторен достъп“ с парола като „Парола“
create user 'readaccess'@'localhost' IDENTIFIED BY 'Password'
Сега предоставете достъп за четене до всички таблици на база данни, наречена „test“, като използвате ключовата дума GRANT в MySQL
grant select on test.* to 'readaccess'@'localhost'
Сега, за да потвърдите достъпа, можете да влезете с този потребител на име „readaccess“ и да опитате да заявите таблиците в базата данни „test“.
Ако обаче се опитате да вмъкнете данни в някоя от таблиците в тестовата база данни, ще получите грешка при отказан достъп, тъй като изрично сме предоставили достъп за четене на този потребител.
В # 5) Как да виждам потребители в MySQL?
Отговор: MySQL има таблица на системно ниво, наречена „mysql.user“, която съдържа списък на всички потребители, създадени за екземпляра на сървъра MySQL. Привилегиите на тази таблица обикновено са ограничени до root или администраторски потребители или някой, който управлява удостоверяването и упълномощаването за екземпляра на MySQL сървър.
В # 6) Как да намеря името и паролата на потребителя на MySQL?
Отговор: Съпоставянето на потребител и парола на MySQL се съхранява в системната таблица ‘mysql.user’, която е таблица с ограничен достъп. Паролата се съхранява в криптиран формат в зависимост от режима на криптиране, който е избран по време на създаването на потребителя.
Ако обаче акаунтът на някой е заключен, MySQL предоставя друга команда, наречена ALTER USER, която може да се използва за отключване на даден потребителски акаунт.
Заключение
В този урок научихме за командата MySQL CREATE USER, която се използва за удостоверяване и управление на достъпа обикновено от администраторите на база данни.
MySQL предоставя много мощни механизми за удостоверяване и базирани на роли задания, които позволяват да се създават нови потребители с предварително дефинирани разрешения за достъп. Видяхме и примери за създаване на потребители с различни механизми за оторизация, различни настройки на паролата, опции за изтичане и т.н.
Препоръчително четене
- Как да изтеглите MySQL за Windows и Mac
- MySQL Урок за създаване на изглед с примери за кодове
- MySQL Създаване на урок за таблици с примери
- 31 Топ бази данни Тестване на интервюта Въпроси и отговори
- Урок за нормализиране на базата данни: Примери за 1NF 2NF 3NF BCNF
- Пълно ръководство за тестване на база данни (Защо, какво и как да тестваме данни)
- MongoDB Създаване на резервно копие на база данни
- MongoDB Създаване на потребител и задаване на роли с примери