Да вляза
Всички компютърни тайни за начинаещи и професионалисти
  • Защита на информацията и личните данни
  • За руски клиенти от облака Microsoft Azure
  • Фотоизложба: ТАСС отваря архиви
  • Изтеглете CSS v34 от TheAmonDit Изтеглете cs изходен код с кожи за оръжия
  • Изтегляне на майнкрафт за android версия 1
  • Инсталиране и актуализиране на фърмуера на Huawei и Honor
  • Как да работите с mysql в командния ред. Ръчно инсталиране на MySQL на Windows. Свързване към MySQL сървъра в конзолата

    Как да работите с mysql в командния ред.  Ръчно инсталиране на MySQL на Windows.  Свързване към MySQL сървъра в конзолата

    Популярна система за управление на бази данни MySQLшироко използван за различни нужди, предимно като де факто стандарт в областта на интернет хостинга. Не по-малко разпространен е пакетът за управление на тази СУБД - phpMyAdmin. Без съмнение това е добър, удобен продукт, но много често се случва уменията за работа с този продукт напълно да заместят уменията за работа със самата СУБД. Затова в този материал решихме да запознаем нашите читатели с това как да изпълняват основни административни задачи на MySQL от командния ред.

    Както нашите редовни читатели може би са забелязали, ние последователно се противопоставяме на използването на различни видове контролни панели от начинаещи, независимо колко удобни и широко разпространени могат да бъдат те. В същото време не отричаме тяхното съществуване и самите ние ги използваме с удоволствие в ежедневието си.

    Но има една голяма разлика: специалист, който знае как да работи с командния ред с помощта на панела, не замества способността да работи с продукта, а само улеснява себе си да изпълнява ежедневни задачи. И начинаещ, свикнал да извършва всички действия в панела, ако е недостъпен, изпада в тиха паника, защото сега трябва да въведе някои „магии“ в тази неразбираема черна конзола ...

    Всъщност работата със СУБД на ниво команден ред не е никак трудна, а някои административни задачи са по-лесни и удобни за изпълнение в нея. Нека направим резервация веднага: под администриране имаме предвид администрирането на СУБД сървъра, а не самите бази данни. Разбира се, можете да работите с тях и от командния ред, но е по-добре да използвате по-подходящи инструменти за това.

    Управление на бази данни и потребители в MySQL

    Ако трябва да започнете да танцувате от печката, тогава работата с СУБД трябва да започне със създаване на бази данни и потребители на тези бази данни. Задачите са по същество прости и могат да бъдат решени перфектно, и най-важното, просто, от конзолата. Помощна програма със същото име е предназначена да работи с MySQL сървъра mysql, с който се работи в интерактивен режим, така че първо ще се свържем със сървъра:

    Mysql -u root -p

    Когато превключвателят -u указва потребителското име, а -p указва удостоверяване на парола, синтаксисът на командата ви позволява да укажете паролата, като я въведете без интервали непосредствено след ключа, но в този случай тя ще бъде запазена в хронологията на командите, което е не е съвсем добър, така че е по-добре да въведете паролата интерактивно. След като изпълним тази команда, ще се озовете в средата на MySQL, както е посочено от променения ред на командния ред.

    Работата в тази среда има свои собствени характеристики: всяка команда трябва да завършва със символа ; или \g, за което, между другото, пише в първия ред на поздрава. От този режим се излиза с командата:

    Нека поговорим за една много често срещана грешка: забравяне да поставите точка и запетая в края на командата. Какво да правя? Нищо страшно, просто попълнете липсващите знаци в следващия ред.

    Първо, нека да разгледаме списъка с бази данни:

    Показване на бази данни;

    Както се казва, без ненужни подробности, но за повечето административни задачи това е достатъчно:

    Намирането на списъка с потребители е малко по-трудно; той се съхранява под формата на таблица с база данни на услуги mysql, затова пишем малка заявка:

    Изберете потребител, хост от mysql.user;

    Екип изберетеизбира посочените колони потребител, хост, опцията from показва откъде ги избираме, а именно от потребителската таблица на базата данни mysql.

    Първата колона показва потребителя, втората - хоста, на който този потребител има право да се свързва, % - обозначава всяка стойност. Моля, имайте предвид, че ако Ивановима в настройките локален хост, след това, когато се свържете с mysqlпо адреса 127.0.0.1 той няма да може да получи достъп, това трябва да се вземе предвид, когато посочвате данни за връзка към СУБД сървъра във вашите приложения.

    Можете да видите собствениците на бази данни, като използвате следната заявка:

    Изберете host,db,user от mysql.db;

    Тук не са необходими специални коментари. Например, Ивановима права върху бази данни с префикса ivanov_когато е свързан чрез локален хост, и andrey към основи с префикс andrey_на всеки хост. Можете да видите потребителските привилегии с командата:

    Показване на грантове за "ivanov"@"localhost";

    Поставяме потребителското име и хоста в единични кавички.

    Първият ред съобщава, че посоченият потребител няма привилегии ( УПОТРЕБА) към всяка таблица от всяка база данни ( *.* ), вторият ред говори за всички основни привилегии за всички таблици на всички бази данни с префикса ivanov_.

    Подробният анализ на системата за права на MySQL далеч надхвърля обхвата на тази статия, нека просто кажем ВСИЧКИ ПРИВИЛЕГИИдава на потребителя всички права върху неговите бази данни, но не му позволява да управлява правата за достъп на други потребители. За целта се използва набор от права ВСИЧКИ ПРИВИЛЕГИИС ОПЦИЯ ЗА ОТПУСКАНЕ, който има по подразбиране корен. За обикновен потребител този набор от права е излишен.

    Нека се опитаме да създадем нов потребител:

    Създайте потребител "petrov"@"localhost", идентифициран с "парола";

    Синтаксисът на командата е прост, посочваме потребителско име и хост, както и идентификационни данни под формата на парола. Всички предадени стойности се опаковат в единични кавички. След като създадете потребител, трябва да му зададете права, това се прави с командата ГРАНТ. Първо, изрично ще го лишим от привилегии към базите данни на други хора:

    Предоставяне на използване на *.* на "petrov"@"localhost";

    След това можем да зададем права по наша преценка, например да издадем пълни права върху бази данни с шаблон за име petrov_:

    Дайте всички привилегии на `petrov\_%`.* на "petrov"@"localhost";

    Моля, обърнете внимание, че шаблонът трябва да бъде обвит със знаци gravis (` ), които се намират на ключа с руската буква Е.

    Можете да предоставите права на отделна база данни по следния начин:

    Дайте всички привилегии на andrey_drupal8.* на "petrov"@"localhost";

    За да изберете права, използвайте командата REVOKE, която има само подобен синтаксис да се (на кого), заменете го с от (СЗО). Например:

    Отменете всички привилегии на andrey_drupal8.* от "petrov"@"localhost";

    За да може MySQL сървърът да приложи правата, трябва да го принудите да презареди кеша на привилегиите с командата:

    Привилегии за флъш;

    Може също да се наложи да промените потребителската парола:

    Задайте парола за "petrov"@"localhost" = password("newpassword");

    Преименувайте го и преименуването не означава непременно промяна на потребителското име; можете да промените както името, така и хоста във всяка комбинация:

    Преименувайте потребителя "petrov"@"localhost" на "petr"@"127.0.0.1";

    И накрая, изтрийте акаунта:

    Пуснете потребителя "petr"@"127.0.0.1";

    Нека да преминем от потребителите към базите данни; в най-простия случай, за да създадете нова база данни, командата е достатъчна:

    Създаване на база данни petrov_newdb;

    Това ще създаде база данни с кодова страница по подразбиране и кодиране за сравнение. Ако СУБД сървърът не е конфигуриран отделно, тогава това кодиране най-вероятно ще бъде latin1_swedish_ci, което в някои случаи може да причини проблеми, ако не сега, то в бъдеще, така че е добро правило изрично да посочите кодирането, когато създавате базата данни. За UTF-8 би било така:

    Създаване на база данни petrov_newdb набор от знаци по подразбиране utf8 collate utf8_general_ci;

    За Windows-1251:

    Създаване на база данни petrov_newdb набор от символи по подразбиране cp1251 collate cp1251_general_ci;

    За да премахнете базата данни, използвайте:

    Изтриване на база данни petrov_newdb;

    Проверка, оптимизиране, коригиране на грешки в MySQL бази данни

    Докато MySQL работи активно, базите данни могат да станат фрагментирани и да съдържат грешки в табличните данни. Сега не говорим за сериозни повреди; такива ситуации трябва да се разглеждат индивидуално, а за най-простите грешки, които могат да бъдат успешно елиминирани с помощта на самата СУБД. За проверка, ремонт и оптимизиране е удобно да използвате помощната програма mysqlcheck.

    За да проверите базата данни, направете къде andrey_drupal8- име на база данни:

    Mysqlcheck -u root -p --check andrey_drupal8

    Всички бази данни могат да бъдат проверени наведнъж с командата:

    Mysqlcheck -u root -p --check --all-databases

    И тъй като целият изход най-вероятно няма да се побере на екрана, има смисъл да го пренасочите към командата по-малко:

    Mysqlcheck -u root -p --check --all-databases | по-малко

    забележи, че по-малкови позволява да превъртате изхода надолу и нагоре с помощта на стрелките, натиснете за изход р.

    Ако са открити грешки в някоя от базите данни, трябва да се опитате да ги коригирате, за да направите това, посочете:

    Mysqlcheck -u root -p --auto-repair andrey_drupal8

    За да оптимизирате, използвайте ключа - - оптимизиране, можете да оптимизирате една база данни или няколко, за да направите това, избройте ги след ключа --бази данни:

    Mysqlcheck -u root -p --optimize --databases andrey_drupal8 petrov_newdb

    а също и всички наведнъж:

    Mysqlcheck -u root -p --optimize --all-databases

    Качване и зареждане на дъмпове на MySQL база данни

    Друга често срещана задача при администриране на всяка СУБД, дъмповете на базата данни се използват както за архивиране, така и за прехвърляне или създаване на копия. Ако архивирането е автоматизиран процес, тогава създаването на копия за прехвърляне към друг сървър или преди значителни интервенции в структурата на базата данни трябва да се направи ръчно.

    И ако става въпрос за големи бази данни, тогава тук phpMyAdminлош помощник, влияе върху времето за изпълнение на скриптовете, размера на изтегления файл, наличната памет и т.н. И въпреки че все още можете да качите голям дъмп с него, може да не успеете да го качите обратно.

    Нека започнем със създаването на дъмпове; помощната програма се използва за тези цели mysqldump, чийто синтаксис следва синтаксиса mysqlcheck. За да изтеглите дъмпа, използвайте командата:

    Mysqldump -u root -p andrey_drupal8 > ~/drupal8.sql

    За да разтоварите няколко бази данни наведнъж, използвайте ключа --бази данниили --всички бази данниза създаване на дъмп на всички бази данни наведнъж. Резултатът от командата трябва да бъде изпратен във файл и да посочи местоположението му, в нашия случай това е файлът drupal8.sqlвъв вашата домашна директория. Можете също така да прехвърлите изхода към архиватора и да получите архива веднага:

    Mysqldump -u root -p andrey_drupal8 | gzip > ~/drupal8.sql.gz

    Като цяло не препоръчваме да използвате един дъмп за няколко бази данни наведнъж; най-добрият вариант би бил собствен дъмп за всяка база данни, като в същото време използвате ключ --всички бази данниоправдано в случаите, когато трябва бързо да направите резервно копие на целия сървър, например, когато актуализирате или преинсталирате СУБД, така че да можете бързо да възстановите информацията, ако нещо се обърка.

    За да възстановите базата данни, трябва да изпратите дъмпа на входа на помощната програма mysql; за единични дъмпове винаги трябва да посочите целевата база данни, например:

    Mysql -u root -p andrey_drupal8< ~/drupal8.sql

    Не е задължително дестинацията да е изходната база данни, но имайте предвид, че ако базата данни вече съществува, цялото й съдържание ще бъде заменено от съдържанието на дъмпа.

    За дъмпове, съдържащи повече от една база данни, просто посочете:

    Mysql -u root -p< ~/all.sql

    В този случай всяка база данни ще бъде заредена в свой собствен източник; ако базата данни източник не съществува, тя ще бъде създадена.

    Както можете да видите, създаването и възстановяването на дъмпове с помощта на командния ред се извършва буквално в един ред и е много по-лесно и по-бързо от използването на phpMyAdmin или подобни инструменти.

    Възстановяване на забравена root парола на MySQL

    Друга много популярна задача. Да кажем веднага, че е невъзможно да възстановите паролата на суперпотребител MySQL, както всеки друг потребител, но можете да я промените. За да направите това, трябва да имате права на суперпотребител за операционната система. Първо, нека спрем услугата DBMS:

    Услугата mysql спира

    След това го стартираме в безопасен режим, като пропускаме таблиците с привилегии:

    Mysqld_safe --skip-grant-tables &

    Моля, имайте предвид, че след изпълнение на тази команда, подканата за командния ред ще изчезне, оставяйки само мигащ курсор. Пишем директно там:

    Mysql -u root

    и се озоваваме в средата на mysql с root права без въвеждане на парола.

    Струва ни се, че мнозина вече са се досетили какво да правят по-нататък, но задайте пароланяма да работи в този режим, така че трябва да отидете по различен начин. Не забравяйте, че информацията за потребителите се съхранява в таблица потребителсервизна база данни mysql. След това изпълняваме следната заявка:

    Актуализирайте mysql.user set password = парола ("нова парола"), където потребител = "root";

    важно!В новите версии на MySQL, вместо колона пароламаси потребителсе използва колона низ_за_удостоверяване, така че вместо това задайте паролатрябва да се посочи задайте низ за удостоверяване.

    Тази заявка ще зададе нова парола нова паролаза всички редове в колона потребителкоито са изброени корен.

    Нека актуализираме кеша на привилегиите:

    Привилегии за флъш;

    Да излезем от режима:

    Нека спрем услугата и я стартираме в нормален режим:

    Услугата mysql спира
    услуга mysql стартиране

    Надяваме се, че след като прочетете тази статия, ще придобиете първоначални умения за работа с MySQL от командния ред и ще можете да се чувствате уверени, дори когато phpMyAdmin не е наличен, и може би дори ще оцените удобството на конзолните команди и ще бъде по-малко вероятно да въведете панела, предпочитайки да управлява директно сървъра.

    По-долу е даден списък на най-полезните и често използвани команди MySQLс примери.

    mysql в началото на реда означава, че командата се изпълнява след влизане MySQL.

    Символът # или $ в началото на реда означава, че командата се изпълнява от командния ред.

    За да проверите състоянието на сървъра MYSQLнаправи:

    За FreeBSD:

    # услуга състояние на mysql-сървър

    V CentOS/RHEL:

    Състояние на # услуга mysqld

    MySQLот конзолата, ако сървърът MySQLе на същия хост:

    За да се свържете със сървъра MySQLот конзолата, ако сървърът MySQLсе намира на отдалечения хост db1.example.com:

    $ mysql -u потребителско име -p -h db1.example.com

    Работа с бази данни и таблици – преглед, изтриване, редактиране на записи. Конзола

    Създайте база данни на MySQLсървър:

    Mysql създава база данни

    Показване на списък с всички бази данни на сървъра MySQL:

    използване на mysql;

    Показване на всички таблици в базата данни:

    Mysql показва таблици;

    Вижте формата на таблицата в базата данни:

    mysql описва;

    Изтриване на база данни:

    Mysql drop база данни;

    Изтриване на таблица от базата данни:

    Mysql падаща таблица;

    Показване на цялото съдържание на таблицата:

    Mysql ИЗБЕРЕТЕ * ОТ;

    Показване на колони и съдържание на колони в избраната таблица:

    Mysql показва колони от ;

    Показване на редове в конкретна таблица, съдържаща " каквото и да е ":

    Mysql SELECT * FROM WHERE = "каквото и да е";

    Показване на всички записи в конкретна таблица, съдържаща „Боб“ и телефонния номер „3444444:

    Mysql SELECT * FROM WHERE име = "Боб" И phone_number = "3444444";

    Покажи всички записи, НЕсъдържащ името „Боб“ и телефонния номер „3444444“, сортирани по полето phone_number:

    Mysql SELECT * FROM WHERE name != " Bob " AND phone_number = " 3444444 " подреждане по phone_number;

    Показване на всички записи, започващи с буквите "bob" и телефонния номер "3444444" в конкретна таблица:

    Mysql SELECT * FROM WHERE име като "Bob %" AND phone_number = "3444444";

    Показване на всички записи, започващи с буквите "bob" и телефонния номер "3444444", ограничавайки записите от 1 до 5:

    Mysql SELECT * FROM WHERE име като "Bob %" AND phone_number = "3444444" limit 1.5;

    Използване на регулярни изрази ("REGEXP BINARY") за търсене на записи. Например, за търсене без разлика на главни и малки букви, намерете всички записи, започващи с буквата A:

    Mysql SELECT * FROM WHERE rec RLIKE "^a";

    Показване на всички уникални записи:

    Mysql SELECT DISTINCT FROM; mysql SELECT , FROM ORDER BY DESC;

    Покажете броя на редовете в таблицата:

    Mysql SELECT COUNT(*) FROM ;

    Mysql SELECT SUM(*) FROM ;

    Премахване на колона:

    Mysql променя колона за изпускане на таблица;

    Добавяне на колона към базата данни:

    Mysql променя таблицата добавя колона varchar(20);

    Промяна на името на колоната:

    Mysql променя таблицата за промяна на varchar(50);

    Създайте колона с уникално име, за да избегнете дублиране на имена:

    Mysql alter table add unique();

    Преоразмеряване на колона:

    Mysql променя таблицата, променя VARCHAR(3);

    Премахване на колона от таблица:

    Mysql променя индекса на изпускане на таблица;

    Mysql ЗАРЕЖДАНЕ НА ДАННИ ВЪВ ФАЙЛ " /tmp/filename.csv " замени В ПОЛЕТА НА ТАБЛИЦАТА, КРАЙНИ С "," РЕДОВЕ, КРАЙНИ С "n" (field1,field2,field3);

    Потребители на MySQL сървър, пароли - добавяне, промяна на потребители и пароли. Конзола

    Създаване на нов потребител - свързване към сървъра MySQLкато root, превключване към база данни, добавяне на потребител, актуализиране на привилегии:

    # mysql -u root -p mysql използва mysql; mysql INSERT INTO user (Host,User,Password) VALUES("%","username", PASSWORD("password")); mysql привилегии за флъш;

    Промяна на потребителската парола от конзолата на отдалечения хост db1.example.org:

    # mysqladmin -u потребителско име -h db1.example.org -p парола "нова-парола"

    Промяна на потребителската парола от конзолата MySQL- свържете се като root, актуализирайте парола, актуализирайте привилегии:

    # mysql -u root -p mysql ЗАДАВАНЕ НА ПАРОЛА ЗА " потребител "@" име на хост " = ПАРОЛА (" парола тук "); mysql привилегии за флъш;

    Възстановяване/промяна на паролата на главния сървър MySQL- Спри се MySQL, стартирайте без таблици с привилегии, свържете се като root, задайте нова парола, излезте и рестартирайте MySQL.

    # /etc/init.d/mysql stop # mysqld_safe -skip-grant-tables & # mysql -u root mysql use mysql; mysql update потребителски набор парола=ПАРОЛА(" newrootpassword ") където потребител="root"; mysql; флъш привилегии; mysql quit # /etc/init.d/mysql stop # /etc/init.d/mysql start

    Задайте root парола, ако има on root парола.

    # mysqladmin -u root парола нова парола

    Актуализирайте root паролата:

    # mysqladmin -u root -p стара парола нова парола

    Задаване на правото за свързване към сървъра от хоста localhost с парола "passwd" - свързване към suroot, превключване към базата данни, настройка на привилегии, актуализиране на привилегии:

    # mysql -u root -p mysql използва mysql; mysql предоставя използване на *.* за bob @localhost, идентифицирано от " passwd "; mysql привилегии за флъш;

    Задаване на потребителски привилегии за използване на базата данни - свързване като root, превключване към базата данни, задаване на привилегии, актуализиране на привилегии:

    # mysql -u root -p mysql използва mysql; mysql INSERT INTO db (Host,Db,User,Select_priv,Insert_priv,Update_priv,Delete_priv,Create_priv,Drop_priv) VALUES ("%","databasename","username","Y","Y","Y"," Y", "Y", "N"); mysql привилегии за флъш;

    Mysql предоставя всички привилегии на databasename .* на потребителско име @localhost; mysql привилегии за флъш;

    Актуализиране на информацията в базата данни:

    Mysql UPDATE SET Select_priv = "Y", Insert_priv = "Y", Update_priv = "Y", където = потребител";

    Изтриване на ред в таблица:

    Mysql DELETE from where = "каквото и да е";

    Актуализиране на привилегии в базата данни:

    Привилегии за промиване на Mysql;

    Архивиране - създаване, възстановяване на бази данни. Конзола

    Създайте резервно копие (дъмп) на всички бази данни във файла alldatabases.sql:

    # mysqldump -u root -p парола -opt; /tmp/alldatabases.sql

    Архивирайте една база данни във файла databasename.sql:

    # mysql dump -u потребителско име -p парола -бази данни име на база данни; /tmp/databasename.sql

    Архивирайте една таблица във файла име на база данни.име на таблица.sql:

    # mysql dump -c -u потребителско име -p парола име на база данни име на таблица; /tmp/databasename.tablename.sql

    Възстановяване на база данни (или таблица) от резервно копие:

    # mysql -u потребителско име -p парола име на база данни< /tmp/databasename.sql

    Създаване на таблици от бази данни. Конзола

    имената на колоните се изписват с малки букви;
    ГЛАВНИ букви - видове и атрибути на колони;
    в (скоби) - стойността на типа колона.

    Създайте таблица, пример 1:

    mysql CREATE TABLE (първо име VARCHAR(20), средноинициално VARCHAR(3), фамилно име VARCHAR(35), суфикс VARCHAR(3), officeid VARCHAR(10), потребителски идентификатор VARCHAR(15), потребителско име VARCHAR(8), имейл VARCHAR(35) ), телефон VARCHAR(25), групи VARCHAR(15), клеймо за дата ДАТА, клеймо за време TIME, pgpemail VARCHAR(255));

    Създайте таблица, пример 2:

    Mysql създава таблица (personid INT(50) NOT NULL AUTO_INTCREMENT PRIMARY KEY, първо име VARCHAR(35), средно име VARCHAR(50), фамилно име VARCHAR(50) по подразбиране "bato");

    Добър ден колеги :)

    Да, точно колеги, защото за простосмъртния командният ред на MySQL (или MySQL Shell, както обичат да го наричат ​​разработчиците), както и работата с MySQL в конзолата едва ли ще са полезни.

    За да бъде тази тема интересна, трябва да сте най-малко начинаещ системен администратор, който по принцип не използва phpMyAdmin и други интерфейси.

    Лично аз предпочитам да използвам phpMyAdmin като основен за работа с MySQL, защото... По природа съм визуален човек. Въпреки това, понякога на практика има ситуации, когато познаването на командния ред на MySQL и способността за работа с MySQL в сървърната конзола са просто необходими.

    В момента имам три от тях:

    1. Първият път, когато се сблъсках с работа в MySQL конзолата, беше, когато трябваше да импортирам голяма база данни. Не беше зареден изцяло през phpMyAdmin, защото... падна някъде по средата поради таймаут, въпреки промяната на настройките за времето за изпълнение на операцията и размера на изтеглените файлове. По принцип беше възможно да се изберат необходимите стойности, но ми се стори твърде дълъг процес.
    2. Следващият път, когато трябваше да работя с MySQL чрез командния ред, беше да деактивирам проверката на чужди ключове, когато трябваше да изтрия данни от таблица, която беше свързана с други чрез ключове. Просто не можах да намеря как да направя това в phpMyAdmin.
    3. Сериозните компании използват само конзолата за работа с MySQL без никакви phpMyAdmins. Не знам защо точно, но знаещи хора казаха, че има нещо общо със сигурността. В резултат на това всички трябваше да работят с командния ред на MySQL, включително и аз :)

    Но, отново, работата с MySQL в конзолата и командния ред е доста подходяща за ежедневна употреба. Всички известни визуални програми за работа с бази данни все още работят на базата на конзолни команди на MySQL. Затова както искате :)

    Пускане на конзолата на различни ОС

    Тъй като ще демонстрирам как да използвам командния ред на MySQL в конзолата на сървъра, би било добра идея първо да започнете с него.

    Действието е просто, познато на мнозина, за което е достатъчно познаването на „горещите клавиши“.

    Стартиране на конзолата на Windows:

    • Win+R за отваряне на командния ред на Windows с администраторски права;
    • Въведете командата cmd
    • Кликнете Въведетена клавиатурата

    Стартиране на конзолата в Linux дистрибуции (терминал): в Ubuntu, с който работих, е достатъчна системната комбинация от клавиши Ctrl+Alt+T. Не мога да кажа нищо за други операционни системи, базирани на Linux.

    Стартиране на конзолата на MacOS: Не съм правил това сам, защото... Все още не съм се сдобил с Mac и едва ли ще си взема, защото не ми трябва, но доколкото успях да разбера, в тази ОС няма „горещи клавиши“ за извикване на терминал. Така че, ако сте потребител на продукти на Apple, тогава стартирайте конзолата през интерфейса на ОС, за щастие има много ръководства в Интернет.

    Малко е неудобно дори да публикувате такава информация, в случай че някой професионален системен администратор с богат опит случайно попадне на тази статия, т.к. той ще си помисли: „Авторът смята своите читатели за програмисти, но в същото време учи как да стартирате конзола... Някакъв психопат :-).“

    Да, съвсем логично :) Но просто вземам предвид ситуацията, че наред с професионалните разработчици тук могат да попаднат и начинаещи. Ето защо се опитвам да направя информацията пълна и достъпна за всички категории потребители, както вече споменах.

    Основни конзолни команди на MySQL

    И така, първо трябва да имаме достъп до командния ред на MySQL в конзолата. За да направите това, отворете конзолата на сървъра и ако имате MySQL инсталиран глобално като услуга, тогава за „проверка на връзката“ пишем следното:

    Mysql -V

    Конзолна команда mysqlни позволява да стартираме помощната програма със същото име, която е команден ред на MySQL.

    Това ще ни позволи да разберем версията на MySQL, инсталирана на компютъра, и да се уверим, че изобщо е инсталирана като услуга. Ако случаят е такъв, тогава ще видите нещо като следния текст в конзолата: .

    Да, не съм „луд кодер“, защото използвам Windows :) Но не е това важното. На Unix системи процедурата ще бъде същата.

    Ако изведнъж MySQL не е инсталиран глобално на вашия компютър или трябва да работите с няколко версии на MySQL, в които има само директории с MySQL файлове и библиотеки, тогава стартирането на MySQL през конзолата ще изглежда така.

    В конзолата отидете в директорията, където се намира изпълнимият файл на MySQL (в Windows, това е поне mysql.exe) със следната команда:

    CD C:\OpenServer\modules\database\MySQL-5.7-x64\bin

    Естествено, вашият път към разпространението може да е различен. Като пример реших да стартирам една от версиите на MySQL, включени в OpenServer.

    И стартираме MySQL, проверявайки неговата версия по пътя:

    Mysql.exe -V

    В резултат на това в конзолата трябваше да се покаже съобщение, подобно на първия случай mysql версия 14.14 Distrib 5.7.16, за Win64 (x86_64).

    Това е всичко, решихме стартирането на MySQL от командния ред през сървърната конзола, сега ще се свържем директно към MySQL сървъра.

    Свързване към MySQL сървъра в конзолата

    MySQL сървърът може да не е непременно на същата машина, на която се опитвате да получите достъп до него в конзолата. Следователно, за да се направи възможно свързването към отдалечен MySQL сървър чрез конзолата, помощната програма mysql има много параметри, с които можете да зададете необходимите настройки.

    За да стартираме командния ред на MySQL в конзолата, просто трябва да напишем следното в конзолата на сървъра:

    В този случай обаче ще получите следната грешка: ГРЕШКА 1045 (28000): Достъпът е отказан за потребител ‘ODBC’@’localhost’ (с парола: NO). Ето как изглежда съобщението за грешка на моя Windows. Ако използвате Linux, тогава вместо ODBC ще има името на вашия системен потребител, под който извършвате действия в системата.

    Всичко това е така, защото по подразбиране, когато се свързва към MySQL сървър, конзолата използва ODBC потребителя на Windows без парола и системния потребител на Linux със същата парола. Хостът по подразбиране е localhost, т.е. Този потребител може да се свързва само от локалната машина.

    Следователно имате две възможности: или да използвате друг потребител, за да влезете в командния ред на MySQL, или да създадете MySQL потребител с необходимия акаунт. Но за втория метод все още не можем без първия :) Затова първо се свързваме към MySQL сървъра под стандартен потребител корен, който се създава при инсталиране на MySQL на компютър и за който достъпът от localhost е разрешен по подразбиране:

    Mysql -u root -p

    Когато бъдете подканени да въведете парола, просто натиснете Enter (ако не сте я въвели, разбира се, когато инсталирате MySQL). След това ще бъдете свързани към MySQL сървъра, ще ви бъде присвоен идентификатор за връзка и ще ви бъде предоставен достъп до командния ред на MySQL.

    Ако искате да се свържете към MySQL сървър, който има конкретно име на хост или IP или искате да влезете като различен потребител, използвайте следния команден формат:

    Mysql -u потребителско_име -p потребителска_парола -h MySQL_сървър_хост_или_IP

    Вместо кирилица с долна черта, разбира се, трябва да въведете данните си на латиница. Между другото, ако желаете, можете да напишете тази команда в малко по-различен формат:

    Mysql --user=потребителско_име --password=потребителска_парола --host=хост_или_IP_на_MySQL_сървър

    Ако по някаква причина не искате вашата парола за връзка с MySQL да се показва в конзолата (което всъщност е правилно), можете да използвате следната команда:

    Mysql -u потребителско_име -h MySQL_сървър_хост_или_IP -p

    Тъй като паролата не е изрично посочена, ще бъдете подканени да я въведете в следващата стъпка. Освен това въведените от вас знаци няма да се показват дори под формата на звездички (заместващи знаци), вместо това ще има само празен ред.

    В допълнение към посочените настройки за връзка е възможно да се използват следните параметри, чиито стойности ще бъдат посочени по начин, подобен на изброените по-горе:

    1. --port или -P - за указване на порта за свързване към MySQL сървъра;
    2. —протокол — протоколът, чрез който ще се осъществява връзката (възможни опции: TCP за Windows и Linux, SOCKET за Linux, PIPE и MEMORY за Windows);
    3. --socket или -S - този параметър е полезен, ако искате да се свържете чрез гнезда, следователно стойността на параметъра ще бъде socket;
    4. --pipe или -W - параметърът е необходим, ако искате да използвате наречени „тръбопроводи“ или „тръби“ за връзки;
    5. --shared-memory-base-name - този параметър ще бъде полезен за MEMORY връзки чрез споделена памет в Windows;

    Ясно е, че списъкът с всички параметри за свързване към MySQL сървъра не се ограничава до това. В действителност те са много повече.

    Ако по някаква причина стандартната опция, посочваща хост, потребител и парола, не ви подхожда, тогава за да разберете пълния списък с параметри на връзката, ще ви бъде полезна следната информация - https://dev.mysql.com/doc/ refman/5.7/en/connecting.html

    Как да създадете база данни в MySQL конзолата

    След като се свържем с MySQL сървъра и стартираме MySQL командния ред, е време да започнем жизнения цикъл на базата данни на нашия сайт, който започва с нейното създаване. За да създадете MySQL база данни чрез командния ред, трябва да въведете следната команда:

    CREATE DATABASE име на_база_данни;

    Същото действие може да се извърши с помощта на специална помощна програма MySQL mysqladmin. Той работи изолирано от командния ред на MySQL, т.е. За да го използвате, ще трябва да излезете от него или да отворите нова сървърна конзола.

    И след това извикайте следната команда:

    mysqladmin създаване име_база_данни;

    Между другото, с помощта на помощната програма mysqladmin можете не само да създавате и изтривате бази данни, без да влизате в MySQL конзолата, но също така да управлявате конфигурацията на сървъра, MySQL процесите, да управлявате репликации, да пингвате сървъри и да правите много други интересни неща.

    Как да създадете MySQL потребител в командния ред

    Не често, но понякога трябва да създадете нов MySQL потребител. Освен това в конзолен режим.

    В командния ред на MySQL това се прави по следния начин:

    CREATE USER "user_name"@"host_or_machine_IP" ИДЕНТИФИЦИРАН ОТ "user_password";

    Потребителят е създаден. Параметър хост_или_IP_машинаозначава, че когато създавате потребител, трябва да посочите IP, от който той може да се свърже със сървъра, или името на хоста (подходящо е името на домейна на работещата машина в мрежата).

    Между другото, когато посочвате хоста за свързване към MySQL сървъра, можете да използвате символа за процент - % , което означава, че създаденият потребител може да се свърже към MySQL сървъра от всеки IP адрес или хост.

    Трябва да се има предвид, че в този случай localhost не е включен в списъка с адреси, посочени с %, тъй като localhost обозначава връзка чрез UNIX сокет вместо стандартния TCP/IP. Тези. Ако създаденият потребител на MySQL ще се свърже към сървъра, не използвайки сокети, а използвайки различен протокол, посочен при свързване към MySQL сървъра в конзолата, тогава той ще трябва да създаде два потребителски акаунта:

    СЪЗДАВАНЕ НА ПОТРЕБИТЕЛ "потребителско име"@"%" ИДЕНТИФИЦИРАН С "парола"; CREATE USER "username"@"localhost" ИДЕНТИФИЦИРАН С "password";

    Разбрахме как да създадем потребител на MySQL в конзолата. Сега нека зададем потребителските права за извършване на всякакви действия с нашата новосъздадена база данни със следната команда:

    ПРЕДОСТАВЯЙТЕ ВСИЧКИ ПРИВИЛЕГИИ ВЪРХУ име_на_база_данни.* НА "потребителско_име"@"host_or_machine_IP";

    опция ВСИЧКО, както разбирате, просто показва, че на потребителя са разрешени всякакви действия с конкретна база данни. Пълен списък с права, които могат да бъдат предоставени на потребителите чрез командата ГРАНТ, можете да намерите тук (въпреки че описанието на параметрите е на английски) - https://dev.mysql.com/doc/refman/5.7/en/grant.html#grant-privileges

    Между другото, можете да използвате няколко параметъра за привилегии, като ги посочите при извикване на командата, разделени със запетаи.

    Ако искате да създадете суперпотребител, т.е. има глобални привилегии за извършване на различни действия с всички бази данни на сървъра, след което използвайте следното извикване на команда:

    GRANT ALL ON *.* TO "user_name"@"host_or_machine_IP";

    Между другото, би било добра идея да изчистите кеша на MySQL сървъра след задаване на привилегии. Ако ги промените, не забравяйте да направите това, като извикате следната команда:

    ПРИВИЛЕГИИ ЗА ПРОМИВАНЕ;

    И ако искате да промените потребителските права, първо използвайте следната команда, за да нулирате всички права:

    ОТМЕНЯ ВСИЧКИ ПРИВИЛЕГИИ НА *.* ОТ "user_name"@"host_or_machine_IP";

    И след това инсталирайте тези, които трябва да използва ГРАНТ, както е описано по-рано.

    Ако в бъдеще трябва да промените потребителската парола на MySQL, за да направите това, просто изпълнете следните команди в MySQL Shell:

    ЗАДАДЕТЕ ПАРОЛА ЗА "user_name"@"host_or_machine_IP" = ПАРОЛА("нова_парола"); ПРИВИЛЕГИИ ЗА ПРОМИВАНЕ;

    Нулирането на кеша на привилегиите на MySQL сървъра е необходимо за същата цел, както при промяна на правата - без това действие промяната на потребителската парола на MySQL може да не се отчете, така че не бъдете мързеливи да я използвате :)

    Между другото, Интернет е пълен с примери за използване на следната команда за нулиране на паролата на MySQL на потребител:

    UPDATE mysql.user SET Password=PASSWORD("password") WHERE User="username";

    Но тази опция не работи за мен на MySQL 5.7, давайки грешка ГРЕШКА 1054 (42S22): Неизвестна колона „Парола“ в „списък с полета“. Причината се оказа липсата на поле Password в таблицата mysql.user.

    От което можем да предположим, че тази опция работи само за по-стари версии на MySQL, където това поле съществува в потребителската таблица. Затова, за да сте сигурни, използвайте първата ми опция, освен ако, разбира се, не сте принудени да работите с допотопен софтуер без възможност за актуализиране на версии :)

    Това завършва създаването на нов MySQL потребител и прегледа на действията с неговите права и пароли. Да продължим.

    Избор на база данни при работа с MySQL през командния ред

    Сега, след като създадем потребител в MySQL Shell и му дадем права за работа с базата данни, трябва да изберем същата база данни, за да можем да работим със самата база данни и данните, съхранявани в нея.

    За да направите това, използвайте следната команда в MySQL конзолата:

    USE име_на_база_данни;

    Ако всичко е минало добре, в конзолата ще се покаже съобщение Променена база данни, което ще сигнализира, че сме влезли в MySQL базата данни през конзолата. Между другото, когато се свързвате към MySQL сървър, можете първоначално да посочите базата данни, с която ще трябва да работите. За да направите това, трябва да въведете следната команда в конзолата на сървъра:

    Mysql --user=user_name --password=user_password --host=MySQL_server_host_or_IP --database=database_name

    Или същото нещо, само питане за потребителската парола на MySQL:

    mysql -u потребителско_име -h хост_или_IP_MySQL_сървър_име_база_данни -p

    Това е всичко. Мисля, че сега няма да имате никакви затруднения да се свържете с MySQL базата данни през конзолата :)

    Работа с MySQL таблици през MySQL конзолата

    И така, създадохме MySQL база данни чрез конзолата. Сега би било хубаво да се научите как да работите с него за случая, когато командният ред на MySQL ще бъде единственото средство за достъп до данните, съхранявани на сървъра (какъвто беше случаят с мен, за който говорих в началото на статия).

    Както знаете, той се състои от таблици, в които вече се съхранява информация под формата на записи с няколко полета. Следователно, следвайки йерархията на разположение на информацията, първо ще научим как да извършваме типични CRUD операции с таблици.

    CRUD операциите, ако някой не е наясно, са операции за създаване, четене, актуализиране и изтриване на данни от английски. „Създаване, четене, актуализиране, изтриване“ (може да ви е необходимо по време на интервюта).

    Позволете ми да ви напомня, че за да извършвате действия с таблици, първо трябва да се свържете с базата данни MySQL, като използвате командата ИЗПОЛЗВАНЕ.

    И така, първото нещо в нашия дневен ред е командата за създаване на MySQL таблица в базата данни чрез командния ред, която изглежда така:

    CREATE TABLE table_name (поле_име_1 поле_тип_1, поле_име_2 поле_тип_2(поле_размер_2), ИНДЕКС(поле_име_1), ...);

    Както разбирате, полетата могат да бъдат колкото искате, типовете им могат да бъдат различни, както и наличието на индекси и ключове не е задължително.

    Между другото, ако искате да копирате таблица в друга база данни или просто да създадете копие в текущата, следните команди ще ви помогнат:

    CREATE TABLE new_table_name LIKE old_table_name; INSERT new_table_name SELECT * FROM old_table_name;

    Тези команди ви позволяват да копирате структурата на таблицата и нейните данни заедно с индексите на таблицата и тригерите. Ако имате нужда само от данни и структура (имена на полета и техните типове данни), тогава можете да преминете с извикване на една команда:

    CREATE TABLE new_table_name AS SELECT * FROM old_table_name;

    Следващата операция от блока CRUD е четене. В случай на таблици, четенето ще показва тяхната структура. За да направите това, има следните четири команди:

    ПОКАЗВАНЕ НА ПЪЛНИ КОЛОНИ ОТ table_name; DESCRIBE table_name; ОБЯСНЕТЕ table_name; ПОКАЗВАНЕ НА СЪЗДАВАНЕ НА ТАБЛИЦА table_name;

    Първият показва информация за полетата на таблицата на базата данни в таблична форма към MySQL конзолата, като посочва името на полето, типа на данните, наличието на ключове, стойността по подразбиране и т.н. Когато използвате ключова дума ПЪЛЕНможете да получите разширена информация, включително привилегии за всяко поле за текущия потребител, коментари за всеки от тях и стойността на кодиране.

    Втората и третата команда са просто съкратени форми на първата команда без разширената информация. Защо трябваше да се създават повече, дори не мога да си представя... За да има какво да питам на интервюта за работа ли? 🙂

    Четвъртата команда, в допълнение към името, типовете полета и техните стойности по подразбиране, ви позволява да получите стойностите на ключовете на таблицата, табличните машини (InnoDB, MyISAM), кодирането и т.н.

    Операцията за актуализиране в случая на таблици представлява промяна в тяхната структура, т.е. различни действия с полета на MySQL таблица:

    ALTER TABLE table_name DROP COLUMN име на поле; ALTER TABLE table_name ADD COLUMN field_name VARCHAR(20); ALTER TABLE table_name CHANGE старо_име_на_поле new_field_name VARCHAR(50); ALTER TABLE table_name MODIFY field_name VARCHAR(3);

    Първата команда ви позволява да изтриете конкретно поле на таблица, втората ви позволява да го добавите, третата ви позволява да преименувате поле и едновременно с това да промените типа на данните, съхранявани в него, а четвъртата ви позволява да промените само типа на данните .

    Същото може да се направи с индекси на таблици, като се използват до голяма степен подобни команди:

    ALTER TABLE table_name ADD UNIQUE INDEX index_name (field_name_1, ...); ALTER TABLE table_name преименуване INDEX старо име на индекс TO ново име на индекс; ALTER TABLE име_на_таблица DROP INDEX име_на_индекс;

    Следните команди ви позволяват да добавяте, преименувате и премахвате индекси от MySQL таблици чрез командния ред. За добавяне и премахване на индекси, между другото, има друга алтернативна опция за използване на независими команди, вместо да го правите чрез АЛТЕР ТАБЛИЦА. Ето защо, ако желаете, можете да ги използвате:

    CREATE UNIQUE INDEX index_name (field_name_1, ...) ON table_name; DROP INDEX index_name ON table_name;

    Дадените команди са еквивалентни на първата и последната от предишния блок. За съжаление няма отделна команда за преименуване на индекс. И за да промените типа на индекса, за съжаление, в MySQL изобщо няма начин. Единственото решение е да изтриете индекса и да го създадете отново с желания тип.

    Е, най-накрая стигнахме до последната операция от блока CRUD - изтриване. Премахването на MySQL таблици от база данни е много лесно. Просто изпълнете следната команда в MySQL конзолата:

    DROP TABLE table_name;

    Понякога в практиката възникват ситуации, които правят невъзможно изтриването на таблица или промяната на нейната структура. Като правило това се дължи на използването на външни ключове в базата данни за свързване на таблици една с друга. Аз лично се сблъсках с тази ситуация повече от веднъж, както говорих в началото на статията.

    Следователно, ако при изтриване или актуализиране на структура на таблица или нейните данни MySQL ви върне грешка с текста Не може да се изтрие или актуализира родителски ред: ограничение за външен ключ е неуспешно, тогава следната информация ще ви бъде полезна.

    За да изпълним плана си, трябва временно да деактивираме проверката за наличие на външни ключове, да извършим необходимата операция и след това да активираме проверката отново, т.к. това е наистина необходимо и ви позволява да се предпазите от нарушения на целостта на данните в повечето случаи.

    В интерес на истината за тази цел са необходими външни ключове на MySQL.

    Така че, за да изтриете данни, които се намесват от външни ключове, трябва да изпълните следните стъпки в MySQL конзолата:

    SET FOREIGN_KEY_CHECKS=0; #required_mysql_command SET FOREIGN_KEY_CHECKS=1;

    Между другото, ако искате да изтриете външен ключ, процедурата ще бъде същата като при изтриване на индекс:

    ALTER TABLE име на таблица DROP FOREIGN KEY име на чужд_ключ;

    За да разберете името на външния ключ на MySQL на таблица, използвайте вече познатата конзолна команда MySQL ПОКАЖИ СЪЗДАВАНЕ НА ТАБЛИЦА.

    Работа с MySQL таблични данни чрез командния ред

    За CRUD таблици разгледахме операциите в MySQL конзолата. За пълна представа, в тази измамна таблица липсват само команди за работа със самите данни, съхранявани в таблиците на базата данни. Мисля, че много хора знаят тези команди и са ги използвали на практика, но все пак ще ви ги припомня отново.

    CRUD операциите за работа с MySQL таблични данни ще изглеждат така:

    INSERT INTO table_name (field1, field2, ...) VALUES (field_1 value, field_2 value, ...); SELECT field1, field2, ... FROM table_name; UPDATE table_name SET field1 = поле_1 стойност, field2 = поле_2 стойност; DELETE FROM table_name WHERE field1 = поле_1 стойност;

    Горните команди съответстват на операциите за създаване, четене, актуализиране и изтриване на данни от таблици на MySQL база данни. Когато използвате SELECT и UPDATE, също е възможно да използвате квалифицираща клауза WHERE, която може да се използва за указване на избора на данни по същия начин, както е описано при използване на DELETE.

    Освен това, когато извличате данни от база данни с помощта на SELECT, можете да използвате следната опция, за да получите стойностите на всички полета на таблицата:

    SELECT * FROM table_name;

    Естествено, тези операции могат да използват и други оператори освен WHERE. Има особено много от тях при извличане на данни с помощта на SELECT: тук има UNION за комбиниране на резултатите от няколко заявки и различни видове JOIN. Изброяването на всичко е много дълго и ще бъде досадно и за мен, и за вас да четем това.

    Затова нека се съгласим: ако искате да научите повече за нещо, просто напишете за това в коментарите и аз ще се опитам да ви отговоря. Или други знаещи членове на нашата общност ще го направят. ДОБРЕ? 😉

    Така че засега няма да се спираме на този блок.

    Ако трябва да изтриете всички данни от таблица, можете да използвате следната команда MySQL:

    TRUNCATE table_name;

    Преди да го извикате, както бе споменато по-рано, може да се наложи да деактивирате проверката на външния ключ в случай, че има свързани MySQL таблици, което може да попречи на необходимото действие да бъде извършено.

    Друг интересен момент, който трябва да се отбележи тук, е, че тази команда не нулира брояча AUTO_INCREMENT, за който е известно, че се използва за автоматично генериране на стойност на поле, без да е необходимо ръчно да се задава.

    Полета от този тип най-често се използват за генериране на стойности за id на основното ключово поле, което се използва за установяване на връзки между данни от различни таблици.

    Тоест, ако преди да изтриете данните от таблицата с помощта на ТРЪНЦИРАНЕмаксималната стойност на брояча беше 1200, тогава първият запис след тази процедура ще има идентификатор 1201. По принцип всичко е наред. Ако сте задали достатъчен размер за това поле, тогава няма да сте в опасност от препълване на стойностите скоро.

    В някои случаи обаче, когато кодът на приложението има някакъв вид обвързване към стойността на дадено поле, това поведение може да причини неудобство.

    За да избегнете това, използвайте тази опция вместо горната команда:

    TRUNCATE TABLE someTable RESTART ИДЕНТИЧНОСТ;

    Тази опция за извикване на команда ТРЪНЦИРАНЕще ви позволи да нулирате стойността на брояча на полето от АВТОМАТИЧНО УВЕЛИЧАВАНЕ. Следователно стойността на полето на първия добавен запис след това изтриване ще бъде 1 вместо 1201, както в примера по-горе.

    Как да изтриете MySQL база данни чрез командния ред

    Жизненият цикъл на работа с база данни е към своя край и завършва съвсем логично – с нейното изтриване. За да извършите тази операция в MySQL конзолата, трябва да изпълните следната команда (в този случай базата данни за изтриване може да не е избрана от командата ИЗПОЛЗВАНЕ):

    ИЗТРИВАНЕ НА БАЗА ДАННИ име на_база_данни;

    Същото действие може да се извърши с помощта на помощната програма MySQL mysqladmin, която вече споменах в началото на статията при създаване на база данни:

    Mysqladmin drop database_name;

    Когато извикате командата, в конзолата на сървъра се появява следното съобщение:

    Изтриването на базата данни е потенциално много лошо нещо.
    Всички данни, съхранявани в базата данни, ще бъдат унищожени.

    Наистина ли искате да премахнете базата данни „database_name“.

    Накратко, това е предупреждение, че изтриването на MySQL база данни е много лоша идея. Иска се и потвърждение на действието. Ако сте съгласни пишете ги натиснете Въведетена клавиатурата, след което на екрана ще се покаже следното съобщение (ако всичко е минало добре, разбира се):

    Базата данни „име_на_база_данни“ отпадна

    Това е :)

    Как да изтриете MySQL потребител в конзолата

    Сега същата съдба ще сполети потребителя на MySQL, който създадохме, за да ви покажем как се прави. Но първо би било добра идея да проверите дали необходимият потребител действително съществува, преди да го изтриете.

    От MySQL 5.7 има една команда за двете от тези действия:

    DROP USER IF EXISTS потребителско име;

    По-ранните версии на MySQL изискваха две отделни команди:

    ПРЕДОСТАВЯНЕ НА ИЗПОЛЗВАНЕ НА *.* НА "user_name"@"host_or_IP_address"; DROP USER "user_name"@"host_or_IP_address";

    За съжаление, в този случай съобщението за изпълнението на операцията в MySQL конзолата е традиционно неинформативно 🙁 Следователно, за да разберете, че потребителският потребител на MySQL е изтрит, можете да използвате следната команда, която показва списък на всички потребители съществуващи на текущия MySQL сървър:

    ИЗБЕРЕТЕ потребител ОТ mysql.user;

    Тази опция на командата ще показва само потребителски имена. Ако трябва да видите хостовете, от които потребителите могат да се свързват към сървъра, и списъка с привилегии, можете да извикате командата в следната форма:

    ИЗБЕРЕТЕ Потребител, Хост, Grant_priv ОТ mysql.user;

    Също така в таблицата mysql.user има много други полета, които съхраняват други видове привилегии и друга информация, чийто пълен списък можете да намерите тук - https://mariadb.com/kb/en/library/mysqluser- маса/

    Не се бъркайте, че това е документация за СУБД MariaDB. Технически това е същото като MySQL, защото... MariaDB е само неговият клон или разклонение от английското “fork” - разклонение, разклонение.

    Защо беше направено - отново нямам представа 🙂 Може би за да заявя гордо пред всички, че "имам собствена СУБД"?.. Но, честно казано, не съм много наясно с точните мотиви и разлики между MySQL и MariaDB. Ето защо, ако знаете нещо за това, би било интересно да прочетете за това в коментарите.

    Излизане от MySQL Console

    Това е всичко, жизненият цикъл на базата данни и потребителя, който започна със създаването им и завърши с изтриването им, приключи. Следователно командният ред на MySQL, с който работихме в конзолата на сървъра, използвайки помощната програма mysql, вече не ни трябва.

    Остава само да се измъкнем от него...

    Изглежда, че действието е тривиално, но много хора в ситуация, в която трябва да излязат от командния ред на MySQL, просто затварят конзолата на сървъра и го отварят отново. Можете, разбира се, да действате така, но това отнема допълнителни секунди работно време и ви кара да се дразните всеки път, когато трябва да го направите.

    Правилното поведение в тази ситуация е просто да извикате командата изходв командния ред на MySQL, след което услугата учтиво ще се сбогува с нас :)

    И това е всичко 🙂 Така че следващия път не е необходимо да създавате множество конзоли и да ги отваряте отново всеки път, когато трябва да излезете от MySQL в конзолата и да влезете отново в нея, за да управлявате сървъра.

    Това е всичко, което исках да ти кажа днес. Надявам се, че моят измамен лист за работа с командния ред на MySQL през конзолата ще бъде полезен не само за мен, но и за вас.

    Говорейки за практическото приложение на информацията, представена в статията, бих искал да ви напомня, че горните конструкции могат да се използват не само в командния ред на MySQL и сървърната конзола, но и в конзолата на phpMyAdmin и друг софтуер, който предоставя такава възможност.

    Дали ще го използвате или не е ваша работа. Но, както казах в самото начало на статията, има ситуации, когато използването на MySQL конзолата може да ви спести време и стрес. Дали да използвате командния ред всеки ден или не е чисто въпрос на вкус и индивидуални предпочитания.

    Напишете в коментарите кои команди използвате най-често. Или може би знаете някои други трикове. Във всеки случай споделете мнението си с другите и поддържайте разговора в коментарите на други потребители.

    Обещавам, че в процеса ще научите много нови неща, точно както правя аз, когато пиша всяка своя статия :)

    Това е всичко! Успех и до нови срещи :)

    P.S.: ако имате нужда от уеб сайт или трябва да направите промени във вече съществуващ, но нямате време или желание за това, мога да предложа услугите си.

    Повече от 5 години опитпрофесионална изработка на уебсайтове. Работи с PHP, OpenCart, WordPress, Laravel, Yii, MySQL, PostgreSQL, JavaScript, Реагирайте, Ъгловаи други технологии за уеб разработка.

    Възможно е не само чрез PHP. MySQL идва с конзолен клиент за свързване към MySQL сървър. Конзола - това означава, че програмата няма прозоречен интерфейс, а само интерфейс на командния ред, в който достъпът до бази данни се осъществява чрез SQL заявки.

    Командите за свързване към MySQL в командния ред и още повече самите SQL заявки са идентични за . По-долу, за краткост, ще напиша „MySQL“, но навсякъде имам предвид „MySQL или MariaDB“, тъй като в този случай няма разлика между тях.

    Като се свържете чрез командния ред към СУБД MySQL, можете да изпълнявате различни задачи: да преглеждате бази данни и техните таблици, да изпращате заявки към бази данни и да получавате резултатите от изпълнението на тези заявки.

    За да се свържете с MySQL сървъра, използвайте команда на клиентска програма, наречена mysql.exe. Трябва да се стартира, но не с двойно щракване, като обикновена програма, а от командния ред.

    Нека започнем с натискане на клавишната комбинация Win+rи нека го направим

    Ще се отвори команден ред.

    Сега трябва да отидем в папката с файла mysql.exe. Тази папка кошчев директорията, където е инсталирана вашата MySQL СУБД. Например имам MariaDB, която е инсталирана в папката C:\Server\bin\mariadb\. Следователно файлът, който ни интересува, се намира в директорията C:\Server\bin\mariadb\bin\. За да отидете в тази директория, използвайте командата CDпо следния начин:

    CD C:\Server\bin\mariadb\bin\

    В тази команда заменете C:\Server\bin\mariadb\bin\ с правилния път за вашата система

    Сега нека стартираме файла mysql.exe. Не е необходимо да посочвате разширението на файла.exe - системата сама ще познае какво имаме предвид. Ние също трябва да използваме опцията -uИ -стр. След първата опция трябва да посочите потребителското име - корен. След втората опция е паролата за потребителя. В моя случай паролата не е зададена, така че стартирам без опцията -стр:

    Mysql -u root

    Може да изглежда, че не се е променило много, но новият команден ред

    MariaDB [(няма)]>

    показва, че сме свързани към MySQL сървъра. По-точно, в моя случай сме свързани към сървъра MariaDB.

    За да видите списъка с бази данни, въведете командата:

    ПОКАЖИ БАЗИ ДАННИ;

    За да изпратите последващи заявки към конкретна база данни (например тест), използвайте командата ИЗПОЛЗВАНЕ:

    USE тест;

    За да видите таблиците в избраната база данни, изпълнете командата:

    ПОКАЗВАНЕ НА МАСИ;

    Нека създадем някаква таблица:

    CREATE TABLE AuthorsTBL (AuthorID INT NOT NULL AUTO_INCREMENT, AuthorName VARCHAR(100), PRIMARY KEY(AuthorID));

    Нека отново да разгледаме съдържанието на тестовата база данни.

    Инсталиране и администриране на MySQL сървър.

    Инсталиране и първо стартиране на MySQL.

    Инсталация.

    Инсталирането на MySQL е доста просто.Първо трябва да изтеглите и разопаковате източниците (мисля, че не си струва да пишете как да направите това).Можете да ги намерите на уебсайта на MySQL в раздела - за всеки вкус и за всяка операционна система, тъй като MySQL работи на почти всички платформи.

    Ако работите на Unix платформа (по-специално, ще дам примери за Linux, които са малко по-различни за други Unix платформи), трябва да следвате следните стъпки:

    shell> gunzip mysql-ВЕРСИЯ-OS.tar.gz | tar xvf - shell> ln -s mysql-VERSION-OS mysql shell> cd mysql shell> scripts/mysql_install_db shell> bin/safe_mysqld &

    Трябва да разопаковате източниците в директорията /usr/local, тъй като тази директория е указана в конфигурационните скриптове, и да създадете символна връзка за директорията mysql - това се прави, защото тази директория е указана в същите скриптове. Трябва да редактирате скриптовете mysql_install_db и safe_mysqld по отношение на вашата система, за да започнат да работят, по-специално коригирайте пътя, за да посочите местоположението на mysqld и базите данни. За да стартирате демона mysqld, трябва да отидете в директорията /usr/local/mysql/bin и да стартирате скрипта safe_mysql във фонов режим.Ако не получите никакви съобщения, това вече е добре, това означава, че всичко е минало добре.Ако се появява съобщение за грешка, това означава, че - има нещо нередно със скриптовете. Можете да конфигурирате mysql сървъра да стартира, когато компютърът се зареди. За да направите това, трябва да поставите safe_mysql start в един от файловете за инициализация на системата (те се различават в зависимост от версията на Linux). За Linux Slakware трябва да добавите следното към файла /etc/rc.d/rc.local:

    /usr/local/mysql/bin/safe_mysqld &

    Относно Windows-а, на който съм фен, инсталацията е почти безпроблемна.Разопаковаш zip архива, пускаш exe файла и след това всичко си работи от само себе си.Обикновено се инсталира в директория c:mysql. В Windows NT MySQL се инсталира като услуга и можете да посочите начина на стартиране - ръчно или автоматично (Start-Settings-Control Panel-Services-MySQL-Startup).

    Стартирайте MySQL.

    Управлението на сървъра обикновено се извършва от командния ред.Вече писах за Linux, а на Windows 95/98 отворете DOS сесия и изпълнете следните команди:

    cd mysqlbin mysqlbin>mysqld --самостоятелен

    Тази команда ще стартира демона mysql във фонов режим. Windows 95/98 не позволява стартирането на mysqld като услуга. Липсата на съобщения е добър знак, означава, че всичко е наред.

    Когато стартирате mysqld, можете да посочите следните опции:

    -?, --помогнесправка
    -b, --basedir=Път до директорията, където е инсталиран mysql
    -h, --datadirПът до директорията, където се съхраняват базите данни.
    -l, --log=Име на регистъра на транзакциите
    -L, --език=Език по подразбиране (обикновено английски).
    -P, --port=Порт за връзка.
    --skip-grant-tablesИгнорирайте таблиците с привилегии. Това дава на всеки ПЪЛЕН достъп до всички таблици. Редовните потребители не трябва да получават разрешения да изпълняват mysqld.
    --skip-name-resolveПозволява ви да предоставите достъп само на онези хостове, чиито IP адреси са посочени в таблиците с привилегии Използва се за по-високо ниво на защита.
    --пропускане на мрежиИзползвайте връзки само през интерфейса localhost.
    -V, --версияПоказване на информация за версията.

    Сега можете да опитате да влезете в сървъра. За да направите това, използвайте командата mysql. Първоначално има един потребител, който има права за влизане - корен, който няма парола.Първото нещо, което трябва да направите, е да влезете като root и да зададете парола за него. Командата mysql може да използва следните опции:

    Забележка.Командите mysqld и mysql имат някои други опции, но те не представляват особен интерес в момента.

    След като зададете root паролата, трябва да рестартирате сървъра с командата mysqladmin reload, за да влязат в сила промените.След това можете да опитате да влезете отново:

    mysqlbinmysql -u root -p mysql Въведете парола:*******
    Ако получите подканата за mysql monitor, тогава всичко работи правилно. Можете да започнете да настройвате таблици с привилегии, да въвеждате нови потребители, да създавате бази данни и таблици, тоест да правите всичко, което се нарича администриране. Повече за всичко това по-долу.

    Система за привилегии и сигурност в MySQL.

    mysql база данни и таблици с привилегии.

    И така, вие успешно влязохте в базата данни mysql, която се използва за администриране на сървъра. Какво има? И тук има 5 таблици, които не се различават от другите таблици на базата данни, освен че тези таблици се използват за предоставяне на достъп до бази данни с данни и таблици в тях на потребителите. Нека разгледаме всеки от тях.

    Въведете следната команда, която ще покаже таблиците в базата данни mysql:

    mysql>покажи таблици;
    Таблици_в_mysql
    columns_priv
    db
    домакин
    tables_priv
    потребител

    Нека разгледаме накратко функциите на всяка таблица:

    • Потребител
      Определя дали потребителят, който се опитва да се свърже със сървъра, има право да го направи. Съдържа потребителското име, паролата и привилегиите. Ако въведете командата показване на колони от потребител;, тогава получаваме следното:
      ПолеТипНулаКлючПо подразбиранеЕкстра
      Домакинсимвол (60) PRI
      Потребителсимвол (16) PRI
      Пароласимвол (8)
      Select_privсимвол (1) н
      Вмъкване_privсимвол (1) н
      Update_privсимвол (1) н
      Delete_privсимвол (1) н
      Create_privсимвол (1) н
      Drop_privсимвол (1) н
      Reload_privсимвол (1) н
      Shutdown_privсимвол (1) н
      Process_privсимвол (1) н
      File_privсимвол (1) н

      Първоначално тази таблица съдържа root потребителя с паролата, която сте задали, и името на хоста „%". По подразбиране root може да влезе от всеки хост, има пълни привилегии и достъп до всички бази данни. Таблицата също така съдържа запис за потребителя "%", който трябва да бъде премахнат незабавно, тъй като позволява достъп на всеки потребител.

      изтриване от потребител където потребител = "%";

      За да добавите нов потребител, изпълнете следните стъпки:

      вмъкнете в потребителски (хост, потребител, парола) стойности ("%.domain.com", "john", парола ("df456"); вмъкнете в потребителски (хост, потребител, парола) стойности ("localhost, "мери", парола ("кухня"); изберете хост, потребител, парола от потребител;
      ДомакинПотребителПарола
      % корен456g879k34df9
      %.domain.comДжон657t234d980hg6
      локален хостДева Мария234d76gh88rt9

      Обяснения:

      1. Командата за вмъкване вмъква данни в таблицата, не забравяйте да завършите командите с ";".
      2. Когато въвеждате парола, използвайте функцията password(), в противен случай паролата няма да работи!
      3. Всички пароли са криптирани от mysql, така че виждате abracadars в полето за парола Това се прави от съображения за сигурност.
      4. Не е добра практика да се присвояват привилегии на потребители в таблицата с потребители, тъй като в този случай те са глобални и се прилагат за всички бази данни Предоставете привилегии на всеки потребител към конкретна база данни в таблицата db, която ще бъде обсъдена по-късно .
      5. Когато посочвате име на хост за влизане през мрежата, се препоръчва изрично да посочите пълното име на хост, а не "%". В горния пример на потребителя john е разрешено да влиза в сървъра от всички машини в домейна domain.com Можете също така да посочите IP адреси на машината и да маскирате подмрежи за по-голяма сигурност.


    • Определя кои бази данни могат да бъдат достъпни от кои потребители и от кои хостове. В тази таблица можете да предоставите на всеки потребител достъп до базите данни и да присвоите привилегии. Ако изпълните командата показване на колони от db;получаваме следното:
      ПолеТипНула По подразбиранеЕкстра
      Домакинсимвол (60) PRI
      Dbсимвол (32) PRI
      Потребителсимвол (16) PRI
      Select_privсимвол (1) н
      Вмъкване_privсимвол (1) н
      Update_privсимвол (1) н
      Delete_privсимвол (1) н
      Create_privсимвол (1) н
      Drop_privсимвол (1) н

      По подразбиране всички привилегии са зададени на „N". Например, нека дадем на потребителя john достъп до базата данни на библиотеката и да му дадем права за избор, вмъкване и актуализиране (описание на основните команди на mysql ще бъде дадено в отделен раздел, сега целта ми е да покажа как таблиците работят с привилегии).

      вмъкнете в db (host,user,db,select_priv,insert_priv,update_priv) стойности ("%.domain.com", "john", "library", "Y", "Y", "Y");

      Привилегиите, зададени в таблицата db, се прилагат само към базата данни на библиотеката. Ако зададете тези привилегии в таблицата на потребителите, тогава те ще се прилагат към други бази данни, дори ако достъпът до тях не е изрично зададен.

    • Домакин

      Таблицата с хост се използва за разширяване на обхвата на достъп в таблицата db. Например, ако достъпът до която и да е база данни трябва да бъде предоставен на повече от един хост, тогава колоната за хост в таблицата db трябва да бъде оставена празна и изискваната имената на хостове трябва да бъдат попълнени в таблицата с хостове. Да изпълним командата показване на колони от хост;

      ПолеТипНулаКлючПо подразбиранеЕкстра
      Домакинсимвол (60) PRI
      Dbсимвол (32) PRI
      Select_privсимвол (1) н
      Вмъкване_privсимвол (1) н
      Update_privсимвол (1) н
      Delete_privсимвол (1) н
      Create_privсимвол (1) н
      Drop_privсимвол (1) н

    Както може да се види от таблицата, тук също можете да зададете привилегии за достъп до базата данни. Те обикновено рядко се използват ненужно. Всички привилегии за достъп трябва да бъдат зададени в db таблицата за всеки потребител, а в таблицата на хостовете само избройте хоста имена. Сървърът чете всички таблици, проверява потребителско име, парола, име на хост, име на база данни, привилегии. Ако в таблицата db привилегиите за избор, вмъкване са зададени на „Y“, а в таблицата на хоста на „N“, тогава в в крайна сметка потребителят все още ще получи "Y".За да създадете объркване, по-добре е да присвоите привилегии в db таблицата.

    Тези 3 таблици са основните.В новите версии на MySQL, започвайки от 3.22, са добавени още 2 таблици - tables_priv и columns_priv, които ви позволяват да зададете права за достъп до конкретна таблица в базата данни и дори до конкретна колона. Те работят като db таблицата, само че се отнасят за маси и високоговорители. Освен това, започвайки с версия 3.22, можете да използвате командата GRANT, за да предоставите достъп до бази данни, таблици и колони на таблици, елиминирайки необходимостта от ръчно модифициране на таблиците db, tables_priv и columns_priv. Командата GRANT ще бъде обсъдена подробно в следните раздели.

    Привилегии, предоставени от MySQL.

    Привилегия Колона Къде се използва?
    изберете Select_privмаси
    вмъкнете Вмъкване_privмаси
    актуализация Update_privмаси
    Изтрий Delete_privмаси
    индекс Index_privмаси
    променям Alter_privмаси
    създавам Create_privБД, таблици, индекси
    изпускайте Drop_privБД или таблици
    грант Grant_privБД или таблици
    препратки References_privБД или таблици
    презаредете Reload_privсървърна администрация
    изключвам Shutdown_privсървърна администрация
    процес Process_privсървърна администрация
    файл File_privдостъп до файлове на сървъра

    Изберете-използва се за извличане на информация от таблици.Select може да се използва и без разрешение за достъп до която и да е база данни, например като калкулатор.

    Поставете- използва се за вмъкване на информация в таблица. Например:

    Изтрий- използва се за премахване на информация от таблици.

    Създавайте-позволява ви да създавате бази данни и таблици в тях Примери:

    mysql>mysqladmin -u john -ptest create mydb //Създава празна база данни. mysql>използване на mydb; Променена база данни. създаване на мониторинг на таблица (id int(5) not null auto_increment, first_name varchar(15) not null, last_name varchar(20) not null, адрес varchar(80) не null, първичен ключ (id), ключ(last_name));

    Изпускайте- използва се за изтриване на таблици и бази данни.

    Грант-позволява на потребител да предоставя на други потребители привилегии, които самият той има.Двама потребители с различни привилегии и привилегии GRANT могат да комбинират своите разрешения.

    Индекс- позволява на потребителя да създава и изтрива индекси.

    Файл-потребител с това право може да изпълни командите LOAD DATA INFILE и SELECT...INTO OUTFILE и може да чете и пише всеки файл на MySQL сървъра.

    Последните 3 привилегии се използват за администриране на сървъра от командата mysqladmin.

    MySQL специални потребители.

    В MySQL има 3 специални потребители: Монти, администратор и манекен.

    • Монти

      Суперпотребител. Може да влезе в сървъра от локалния хост или от всеки хост в мрежата. Има достъп до всички бази данни и всички привилегии, но ако root може да влезе за първи път без парола, monty трябва да използва парола и трябва да бъде добавени към привилегиите на таблиците ръчно.

      Трябва да се отбележи, че трябва да въведете данни както за localhost, така и за „%“, тоест всеки хост в мрежата.

    • администратор

      Потребител, който може да влезе в сървъра от localhost без парола и на когото са присвоени административни привилегии Презареди и обработиПотребителят .admin може да използва команди mysqladmin reload, mysqladmin refresh и mysqladmin flush-*mysqladmin списък с процеси.

      Администраторът няма достъп до бази данни. Привилегиите за достъп до определени бази данни трябва да се задават индивидуално или в таблицата db, или с командата GRANT.

    • манекен

      Потребител, който може да влезе в сървъра без парола, но само от локалния хост. Всички глобални привилегии са зададени на "N" с изключение на "USAGE", което позволява на фиктивното да създава потребители без привилегии. Правата за достъп до базата данни трябва да бъдат зададени от root .

    Създаване и модифициране на бази данни и таблици в MySQL.

    Създаване на бази данни.

    Създаването на база данни в MySQL се извършва с помощта на помощната програма mysqladmin.Първоначално има само mysql база данни за администратора и тестова база данни, която може да влезе в системата от всеки потребител и е празна по подразбиране.Примерът по-долу илюстрира създаването на база данни.

    Или, като сте в друга база данни, например в mysql, въведете командата:

    mysql>use data1 Базата данни е променена.

    Сега можете да създавате таблици и да въвеждате информация.

    Типове данни в MySQL.

    Преди да създадете таблици, трябва да сте запознати с типовете данни, поддържани от MySQL. Всички те са представени в таблицата по-долу:

    BIGINT [(дължина)]8 байта цяло число
    BLOBДвоичен обект (максимална дължина 65535 байта)
    CHAR(NUM)Низ с фиксирана дължина (1ДАТАСъхранява информация за дата. Използва формата "ГГГГ-ММ-ДД". Може да се модифицира като низ или число. ГГГГ-ММ-ДД ("- " може да бъде ВСЕКИ нецифрен) ГГ-ММ-ДД ("- " може да бъде ВСЕКИ нецифрен) ГГММДД ГГММ Диапазонът за този тип данни е от 0000-00-00 до 9999-12 -31. За разлика от TIMESTAMP, DATE приема години и като две цифри от 0000 до 0099. Това не е много полезно в повечето случаи. Използвайте четирицифрени години в полетата ДАТА. Типът ДАТА е с дължина 4 байта.
    ВРЕМЕ ЗА СРЕЩАКомбиниране на типове ДАТА и ЧАС. Типът DATETIME е идентичен с типа TIMESTAMP със следните изключения: Когато запис е вмъкнат в таблица, която съдържа полета от тип DATETIME, полето DATETIME не се променя. Диапазонът за поле от тип DATETIME е: ​​"0000-01-01 00:00:00" - "9999-12-31 23:59:59", когато се използва в контекст на низ, и "000000000000000" - "99991231235959" когато се използва в числов контекст. Типът DATETIME е с дължина 8 байта.
    DECIMAL (дължина, Dec)Десетично число с плаваща запетая.
    ДВОЙНО [(дължина,намаляване)]Число с двойна точност (4 или 8 байта) с максимална дължина и фиксиран брой десетични знаци.
    FLOAT [(точност)]Число с плаваща запетая. FLOAT(4) и FLOAT единична точност. FLOAT(8) осигурява двойна точност.
    FLOAT [(дължина, десетични знаци)]Число с единична точност с максимална дължина и фиксиран брой десетични знаци (4 байта).
    INT [(дължина)]Цяло число (4 байта).
    ЦЯЛО ЧИСЛО [(дължина)]4-байтово цяло число
    LONGBLOBДвоичен обект с максимална дължина 2**32 байта.
    СРЕДЕН БЛОБДвоичен обект с максимална дължина 16777216 байта.
    MEDIUMINT [(дължина)]Цяло число (3 байта).
    REAL [(дължина,намаляване)]Идентичен на DOUBLE (8 байта).
    SMALLINT [(дължина)]Цяло число (2 байта).
    TINYBLOBДвоичен обект с максимална дължина 255 байта.
    TINYINT [(дължина)]Цяло число (1 байт).
    VARCHAR(NUM)Низ с променлива дължина (1ВРЕМЕСъхранява информация за времето. Използва формата "ЧЧ:ММ:СС". Може да се използва като низ или число. Типът MySQL TIME разбира следния синтаксис. ЧЧ:ММ:ДД ЧЧММДД ЧЧММ ЧЧ ВРЕМЕ данните са с дължина 3 байта.
    КЛАПОТО ЗА ВРЕМЕ (NUM)Автоматично се променя при вмъкване/актуализация. Има формат YYMMDDHHMMSS или YYYYMMDDHHMMSS. Можете да промените полето TIMESTAMP, когато изпълнявате INSERT. Това е полезно, когато искате да зададете персонализирана дата/час за запис. По време на модификации не трябва да указвате стойност за вашето поле TIMESTAMP или да указвате NULL като стойност за вмъкване. В противен случай ще получите невалидна стойност за това поле. Когато използвате mysql с ODBC и Access, трябва да използвате стойността 14 за NUM, тъй като това принуждава MySQL винаги да използва четири цифри в годините. Стойност 12 ще принуди MySQL да използва две цифри в годината. Стойността по подразбиране е 14. Имайте предвид, че в случай на таблици с множество полета TIMESTAMP, само първото такова поле ще се актуализира автоматично.

    Създаване и модифициране на таблици.

    Нека създадем таблицата на клиентите в базата данни data1:

    mysql>use data1 Базата данни е променена. mysql>създайте клиенти на таблица (emp_id int(4) not null auto_increment, emp_name varchar(10) not null, emp_lname varchar(15) not null, адрес varchar(60) не null, phone int(10), първичен ключ(emp_id) );

    Създадохме празна таблица, в която можете да въвеждате данни по няколко начина:
    а) ръчно, като използвате командата вмъкнете в;
    б) зареждане на данни от текстов файл, което е за предпочитане, особено ако трябва да въведете няколко хиляди записа.Синтаксисът на тази команда ще бъде описан по-късно.
    в) използвайте помощната програма mysqlimport, за да заредите данни и от текстов файл.

    Пример за ръчно въвеждане на данни:

    Относно автоматично увеличаванев колона emp_id, това означава, че числовата стойност на тази колона автоматично ще се увеличава с единица с всеки нов запис.Тоест, ако сме въвели стойността 1001, то следващата ще бъде 1002 и т.н.Стойността в такава колона се въвежда веднъж, за да задайте началната точка и след това сървърът сам ще замени необходимите стойности.

    Синтаксис на командата LOAD DATA INFILE.

    ВЪХОДЕН ФАЙЛ ДАННИ "file_name.txt" В ТАБЛИЦА tbl_name, ОГРАЖДЕН ОТ ""] ] [(col_name,...)]

    Да предположим, че има текстов файл 123.txt, съдържащ 2000 записа, които трябва да бъдат въведени в таблица.Трябва да създадем таблица, която има същата структура и същия брой полета като файла (както и подходящи типове данни). Да предположим, че полетата във файла са разделени със запетаи Освен това файлът трябва да е в желаната база данни. Въведете следната команда:

    ЗАРЕДЕТЕ ВХОДЯЩИЯ ФАЙЛ ДАННИ "123.txt" в полетата на клиентите на таблицата, завършващи с ",";

    Това е. Данните от файла се поставят в таблица.

    За да промените таблиците и данните в тях, използвайте командите актуализиране и промянамаса. Нека разгледаме тяхното действие, като използваме таблицата клиенти като пример:

    Клиенти
    emp_idemp_nameemp_lnameадрестелефон
    1001 ДжонУокърНю Йорк1235468798
    1002 БилСмитЧикаго7650945237
    1003 ДжакНикълсънДалас9874325097

    Пример за командно действие промяна на масата:

    Можете да проверите сами :)

    Промяната на данните в таблиците се извършва с помощта на командата актуализация.За пример, нека вземем същите купувачи на маса.

    mysql>update buyers set address="Сиатъл" където emp_lname="Смит";

    Командите се използват и за модифициране на таблици Пуснете и изтрийте.

    Изтрий- изтрива ред от таблицата.Например ако въведете командата
    изтриване от купувачи, където emp_id="1002"

    Линията за Бил Смит ще бъде премахната.

    Изпускайте-ако се използва в Alter table, премахва колона от таблицата.

    Екип ИзпускайтеИзползва се и за изтриване на таблици и бази данни.Трябва да се използва внимателно, тъй като всяко изтриване е необратимо, данните могат да бъдат възстановени само от резервно копие.

    Често срещани проблеми и тяхното разрешаване.

    Най-честият проблем е съобщението Отказан достъп на потребител...Ако това е обикновен потребител, администраторът може да се справи с това, но ако администраторът получи такова съобщение, това вече е проблем. Много често, когато задава парола за root, администраторът забравя да използва функцията парола(), но просто въвежда:

    актуализиране на потребителски набор password="mamamia" където потребител="root";

    След това, когато се опита да влезе в базата данни, той получава съобщението Access denied. Тази парола няма да бъде прочетена. Трябва да въведете правилно:

    актуализиране на потребителски набор password=password("mamamia") където user="root";

    Това е много важна стъпка и трябва да внимавате.Единственият изход в Windows е да деинсталирате сървъра и да инсталирате нов, за щастие все още нищо не е конфигурирано.

    Ако потребител срещне този проблем, причината вероятно е, че таблиците с привилегии не са конфигурирани правилно, предимно същата настройка на паролата, или записите в таблиците db и host са неправилни. Нека да разгледаме това с помощта на прост пример:

    Потребител
    Домакин%.domain.com
    ПотребителДжери
    Парола378b243hk8796
    Select_privY
    Db
    Домакин%.domain.com
    Dbданни1
    ПотребителДжери
    Вмъкване_privY
    Select_privY
    Update_privY
    Delete_privY
    Таблиците съдържат информация за потребителя jerry. Както можете да видите, jerry може да влезе в мрежата от всеки компютър в домейна domain.com, като въведе своето име и парола. Сървърът чете потребителската таблица, определя съвпадението между името и парола, след това таблицата Db, която показва до кои бази данни е разрешен достъп. Ако всичко е правилно, jerry получава достъп до базата данни data1. В тази база данни, jerry може да преглежда информация в таблици, да поставя нови данни там, да променя съдържанието на редове и изтриване на редове.Ако той иска да създаде нова таблица, той ще получи съобщение за отказан достъп, защото няма разрешение за създаване на таблици.

    Много важен нюанс: в таблицата Потребител за jerry е посочено разрешението за избор, което е глобално, тоест валидно за всяка база данни, дори ако той няма достъп до нея.Например, ако jerry въведе командата:

    изберете * от data2.authors;

    той ще има достъп до тази таблица, въпреки че достъпът до базата данни data2 не е зададен в таблицата Db. Следователно, освен ако не е абсолютно необходимо, не е необходимо да давате привилегии на потребителите в таблицата User, но направете това в таблицата Db за всеки конкретна база данни.

    Да кажем, че Джери временно работи в друг отдел, който е в различен домейн, и когато се опита да получи достъп до базата данни, получава отказ за достъп, тъй като компютрите в този домейн нямат достъп до базата данни. В този случай вие трябва да направите следното: изчистете полето Host в таблицата Db и въведете следните данни в таблицата Host:

    update db set host="" where user="jerry";
    вмъкнете в хост (host,db) стойности ("%.domain.com", "data1");
    вмъкнете в хост (host,db) стойности ("monster.domain2.com", "data1");

    Не е необходимо да се посочват привилегии в таблицата Host. Основното е данните в таблиците с привилегии да не се дублират никъде, за да няма противоречия. Данните за потребителя - име и парола - трябва да бъдат зададени в User таблица, привилегии - в таблица Db, хостове, от които е разрешен достъп, в таблица Host Ако въведете всичко внимателно, не би трябвало да има проблеми.

    MySQL версии 3.22 и по-нови имат много добра команда GRANT, която ви позволява да предоставяте на потребителите достъп до бази данни и таблици, без да променяте ръчно таблиците с привилегии.

    GRANT select,insert update,delete on data1.telephone to jerry@%.domain.com идентифициран с "парола";

    С помощта на тази команда можете да зададете привилегии за достъп дори до конкретни колони на таблицата:

    GRANT select(id,name,address,phone),update(address,phone) на data2.customers на jerry@%.domain.com, идентифициран с "парола";

    Използването на тази команда автоматично поставя данни в таблиците Db, Tables_priv и Column_priv, елиминирайки необходимостта от ръчно модифициране.

    Ако трябва да отмените привилегия от потребител, използвайте командата REVOKE.

    ОТМЕНЯ актуализацията (адрес, телефон) на data2.customers от jerry@%.domain.com;

    Заявки към база данни и командата Избор.

    Нямам намерение да навлизам дълбоко в езика SQL, можете да прочетете за това във всяко ръководство за SQL Server, MySQL основно поддържа всички основни стандартни команди ANSI 92, но командата Изберетезаслужава да му се посвети отделна глава. Командата Select се използва за заявка към база данни за извличане на информация от нея Синтаксисът на командата е както следва:

    ИЗБЕРЕТЕ select_expression,... , ...] ИМАЩ редове full_where_definition] ]

    Както се вижда от горното, заедно с командата Select се използват ключови думи, чието използване значително влияе върху реакцията на сървъра.Нека разгледаме всяка от тях.

    • РАЗЛИЧЕН..

      Пропуска редове, в които всички избрани полета са идентични, т.е. премахва дублирането на данни.

    • КЪДЕТО.

      Командна клауза Select, която ви позволява да задавате предикати, които могат да бъдат true или false за всеки ред в таблица. Извличат се само тези редове, за които изразът е true. Например:

      SELECT u_id,lname от издатели WHERE град = "Ню Йорк";

      Връща колоните u_id и lname от таблицата на издателите, за които стойността е в колоната city-New York. Това прави възможно заявката да бъде по-конкретна.

    • Релационни оператори.

      Релационният оператор е математически символ, който показва специфичен тип сравнение между две стойности. Релационни оператори, налични в MySQL:

      Равно > По-голямо = По-голямо или равно Не е равно

      Тези оператори имат стандартни значения за числови стойности.

      Да приемем, че искате да видите всички клиенти с рейтинг, по-голям от 200. Тъй като 200 е скаларна стойност, като стойността в колоната с рейтинг, можете да използвате релационен оператор, за да ги сравните.

      ИЗБЕРЕТЕ * ОТ Клиенти WHERE рейтинг > 200;

    • Булеви оператори.

      Основните булеви оператори също се разпознават в MySQL. Булевите изрази са верни или неверни, като предикатите. Булевите оператори свързват една или повече стойности true/false и произвеждат една стойност true или false. Стандартните булеви оператори, разпознати в SQL, са И, ИЛИ и НЕ.

      Да приемем, че искате да видите всички клиенти в Далас, които имат рейтинг над 200:

      ИЗБЕРЕТЕ * ОТ Клиенти WHERE град = "Далас" И рейтинг > 200;

      При използване на оператора И и двете условия трябва да бъдат изпълнени, тоест всички клиенти от Далас, чийто рейтинг е по-голям от 200, трябва да бъдат избрани.

      Когато използвате оператора ИЛИ, трябва да е изпълнено едно от условията, например:

      ИЗБЕРЕТЕ * ОТ Клиенти WHERE град = "Далас" ИЛИ рейтинг > 200;

      В този случай всички клиенти от Далас и всички с рейтинг над 200 ще бъдат избрани, дори и да не са от Далас.

      NOT може да се използва за обръщане на булеви стойности Примерна заявка с NOT:

      ИЗБЕРЕТЕ * ОТ Клиенти WHERE град = "Далас" ИЛИ НЕ рейтинг > 200;

      Тази заявка ще избере всички клиенти от Далас и всички клиенти, чийто рейтинг е под 200. В тази заявка операторът NOT се прилага само към израза с рейтинг > 200. Можете да направите по-сложна заявка:

      ИЗБЕРЕТЕ * ОТ Клиенти WHERE NOT(град = "Далас" ИЛИ рейтинг > 200);

      В тази заявка NOT се прилага и към двата израза в скобите. В този случай сървърът чете изразите в скобите и определя дали city = "Dallas" или рейтинг > 200 е вярно. Ако някое от условията е вярно, булевият израз вътре в скобите е вярно. Въпреки това, ако булевият израз в скобите е верен, предикатът като цяло е false, тъй като NOT преобразува true в false и обратно.Тоест всички клиенти, които не се намират в Далас и чийто рейтинг е под 200, ще бъдат избрани.

    • IN.

      Операторът IN указва набор от стойности, в които дадена стойност може или не може да бъде включена. Например, заявка

      ИЗБЕРЕТЕ * ОТ Продавачи WHERE град = "Барселона" ИЛИ град = "Лондон";

      може да се пренапише по-просто:

      ИЗБЕРЕТЕ * ОТ Търговци КЪДЕ град В ("Барселона", "Лондон");

      IN определя набор от стойности, като използва имената на членовете на набора, оградени в скоби и разделени със запетаи. След това тества различните стойности на посочения, като се опитва да съвпадне със стойностите в набора. Ако това се случи, тогава предикатът е верен. Когато наборът съдържа числови стойности, а не символни стойности, единичните кавички се пропускат.

    • МЕЖДУ.

      Операторът BETWEEN е подобен на оператора IN. За разлика от дефинирането чрез числа от набор, както прави IN, BETWEEN дефинира диапазон, чиито стойности трябва да намалят, за да стане предикатът верен. Трябва да въведете ключовата дума BETWEEN с началната стойност, ключовата дума AND и крайната стойност. За разлика от IN, BETWEEN е чувствителен към реда и първата стойност в клаузата трябва да е първата по азбучен или цифров ред. Например:

      ИЗБЕРЕТЕ * ОТ Продавачи WHERE comm BETWEEN .10 AND .12;
      ИЗБЕРЕТЕ * ОТ Търговци КЪДЕ град МЕЖДУ "Берлин" И "Лондон";

    • КАТО.

      LIKE е приложим само за полета от тип CHAR или VARCHAR, с които се използва за съвпадение на поднизове. Тези. търси символно поле, за да види дали част от низа му отговаря на условието.Използва заместващи знаци като условие - специални знаци, които могат да съвпадат с нещо. Има два вида заместващи символи, използвани с LIKE:

        Долната черта (_) замества всеки отделен знак.

      • Знакът "%" замества произволен брой знаци.

      Ако поставим следните условия:

      SELECT * FROM Customers WHERE fname LIKE "J%";

      тогава ще бъдат избрани всички клиенти, чиито имена започват с J: Джон, Джери, Джеймс и т.н.

    • БРОЯ.

      Агрегатната функция преброява стойностите в колона или броя на редовете в таблица. Когато работите с колона, тя използва DISTINCT като аргумент:

      ИЗБЕРЕТЕ БРОЯ (DISTINCT snum) FROM Orders;

      При преброяване на редове синтаксисът е:

      ИЗБЕРЕТЕ БРОЯ (*) ОТ Клиенти;

    • ГРУПИРАЙ ПО.

      Клаузата GROUP BY ви позволява да дефинирате подмножество от стойностите в определено поле по отношение на друго поле и да приложите обобщена функция към подмножеството. Това прави възможно комбинирането на полета и агрегатни функции в една клауза SELECT. Да приемем например, че искате да намерите най-високата сума за покупка, получена от всеки продавач. Можете да направите отделна заявка за всяко от тях, като изберете MAX() от таблицата за всяка стойност на полето. GROUP BY ще ви позволи да ги поставите всички в една команда:

      SELECT snum, MAX (amt) FROM Orders GROUP BY snum;

    • ИМАЩ.

      HAVING указва критериите, използвани за премахване на определени групи от изхода, точно както клаузата WHERE прави за отделни редове. Например:

      SELECT cid,cname,price,max(price) //max() също е обобщена функция ОТ клиенти, ИМАЩИ max(price)>500;

      HAVING функционира подобно на WHERE, но агрегатните функции не могат да се използват с WHERE.

    • ПОДРЕДЕНИ ПО.

      Тази команда подрежда изхода на заявката според стойностите в няколко избрани колони. Няколко колони са подредени една в друга, точно както при GROUP BY.

    • СЪЩЕСТВУВА.

      Използва се в подзаявки.

      SELECT cnum, cname, city FROM Customers WHERE EXISTS (SELECT * FROM Customers WHERE city = "San Jose");

      Той приема подзаявка като аргумент и я оценява като вярна, ако произвежда някакъв изход, или като невярна, ако не е. Това я отличава от другите предикатни оператори, в които не може да бъде неизвестен. Например, можем да решим дали да извлечем някои данни от таблица Клиенти, ако и само ако един или повече от клиентите в тази таблица са в Сан Хосе.

    • СЪЮЗ.

      UNION се различава от подзаявките по това, че в него две (или повече) заявки не се контролират от друга заявка. Всички заявки се изпълняват независимо една от друга и изходът им се комбинира. Например:

      SELECT snum, име FROM Salespeople WHERE city = "London" UNION SELECT cnum, cname FROM Customers WHERE city = "London";

      Клаузата UNION комбинира резултата от две или повече SQL заявки в един набор от редове и колони.

    • DESC,ASC.

      DESC-DESCEDENT, изходни данни в обратен ред (по азбучен и цифров ред).По подразбиране е ASC.

    Е, това е всичко накратко MySQL поддържа почти всички основни команди на SQL Server, така че можете да прочетете повече за командата SELECT във всеки учебник по SQL език.

    Основни помощни програми на MySQL.

    Дистрибуцията на MySQL включва следните помощни програми:

    Mysqladmin

    Помощна програма за администриране на сървър. Може да се използва от администратора, както и от някои потребители, които имат определени привилегии, например - Reload_priv, Shutdown_priv, Process_privИ File_priv.Тази команда може да се използва за създаване на бази данни, промяна на паролата на потребител (администраторът може да промени паролата за всеки потребител, но обикновен потребител може да промени само своята собствена), рестартиране и спиране на сървъра, преглед на списъка с процеси, изпълнявани на сървър. Mysqladmin поддържа следните команди:

    Пример за използване на mysqladmin за промяна на парола:

    mysqladmin -u bob парола rawberry

    Трябва да се отбележи, че ако използвате mysqladmin за задаване на паролата, не е необходимо да използвате функцията password(). Mysqladmin сам се грижи за криптирането на паролата.

    mysqlaccess

    Използва се за проверка на потребителските привилегии за достъп до конкретна база данни. Общ синтаксис:

    опции за mysqlaccess

    Полезна помощна програма за проверка на правата за достъп на потребителя, ако получи съобщение за отказан достъп, когато се опитва да се свърже с база данни.

    Настроики:

    mysqlshow

    Използва се, за да покаже с какви бази данни работи сървърът, какви таблици съдържа всяка база данни и какви колони има всяка таблица.

    mysqlshow [опции]]]

    Mysqlshow може да използва следните опции:

    Ако въведете mysqlshow без аргументи, ще бъдат показани всички бази данни, ако посочите името на базата данни, ще бъдат показани всички таблици в нея.

    Mysqldump

    Използва се за създаване на дъмп на съдържанието на базата данни (резервно копие). Можете да запишете съдържанието на базата данни във файл. Синтаксис:

    mysqldump [опции] ]]

    Mysqldump може да използва следните опции:

    Исъмчк

    С помощта на тази помощна програма можете да възстановявате таблици, да управлявате таблици и да събирате статистически данни.

    isamchk [-?adeiqrsvwzIV] [-k #] [-O xxxx=размер] [-Si] [-Sr #] [-O keybuffer=#]
    [-O readbuffer=#] [-O writebuffer=#] [-O сортиране на ключови блокове=#] файлове

    Isamchk се използва за проверка на съгласуваността на таблиците и отстраняване на проблеми, които това може да причини. Ако потребителят често изтрива и добавя данни в таблици, тази помощна програма ще бъде много полезна. Isamchk може да използва следните опции:

    Когато използвате опцията -r, трябва да спрете mysqld.Преди да започнете, трябва да отидете в директорията, където се намира таблицата, която се нуждае от проверка или поправка.

    Isamlog

    Дневник на транзакциите, използван с опцията --log-isam=file_name на демона mysqld. Файлът записва всички промени, които се случват в базата данни. Може да се използва за възстановяване на базата данни. Ако има резервно копие на базата данни преди генерирането на журнала isam, тогава информацията може лесно да бъде възстановена. Ако няма копие, тогава трябва да използвате всички регистрационни файлове от началото на базата данни.

    Safe_mysqld

    Скрипт за стартиране на демона mysqld във версиите на Unix. Изпълнява се при зареждане на системата. За да стартирате автоматично, трябва да добавите запис към един от файловете за инициализация на системата.

    Създаване на уебсайт | |