Linux команды mysql: Команды Linux для работы с MySQL. MySQL и консоль

Содержание

Список полезных команд для работы с MySQL в командной строке Linux

Содержание статьи:

В качестве памятки по работе с MySQL посредством командной строки, буду вести список наиболее полезных и часто используемых команд MySQL. (Список будет дополнятся по мере необходимости)

 

Для входа в консоль MySQL на локальной машине:

Для входа в консоль MySQL на удаленной машине:

mysql -u root -p -h 192.168.1.2

 

Работа с базами данных, таблицами

Создать базу данных:

create database [db name];

Показать список всех баз данных:

Переключиться для работы с определенной базой данных:

Отобразить все таблицы в базе данных:

Просмотреть формат таблицы в базе:

Удалить базу:

Удалить таблицу из базы:

Показать все содержимое таблицы:

mysql SELECT * FROM [table name];

 

Работа с пользователями

Создание пользователя (прим. test с localhost) и паролем ‘password’.

CREATE USER ‘test’@’localhost’ IDENTIFIED BY ‘password’;

Назначить полные права на базу данных (прим. TESTDB) пользователю test:

GRANT ALL PRIVILEGES ON TESTDB.* to ‘test’@’localhost’;

Изменить пароль пользователя под которым выполнена авторизация:

SET PASSWORD = PASSWORD(‘пароль’)

Изменить пароль для другого пользователя MySQL:

SET PASSWORD FOR ‘mysqluser’@’localhost’ = PASSWORD(‘пароль’);

Удалить пользователя ‘test’@’localhost’:

DROP USER ‘test’@’localhost’;

 

Вывести список пользователей:

SELECT user,host,password FROM mysql.user;

 

Резервирование и восстановление баз данных

Резервирование всех баз данных:

mysqldump -u root -p -opt > tmp/ALL_DB_NAME.sql

Резервирование определенной базы данных:

mysqldump -u root -p DB_NAME > /tmp/DB_NAME.sql

Резервирование структуры базы данных, без данных:

mysqldump —no-data -u root -p DB_NAME > /tmp/schema.sql

Резервирование одной или нескольких таблиц:

mysqldump -u root -p DB_NAMETABLE1 TABLE2 TABLE3 > /tmp/dump_table.sql

Резервирование базы данных и ее архивация:

mysqldump -u root -p DB_NAME| gzip > /tmp/DB_NAME.sql.gz

 

Восстановление базы данных:

mysql -u root -p DB_NAME< /tmp/DB_NAME.sql

Восстановление базы данных из архива:

gunzip < /path/to/DB_NAME.sql.gz | mysql -u root -p DB_NAME

 

 

Понравилась или оказалась полезной статья, поблагодари автора

 

MySQL шпаргалки / Хабр

Часто, когда разрабатываешь сайт, замечаешь, как на одни и те же грабли наступают разработчики при проектировании базы данных.

Сегодня я решил опубликовать свои шпаргалки, на самые часто встречающиеся ошибки при работе с MySQL.

Работа с бекапами

Делаем бекап
mysqldump -u USER -pPASSWORD DATABASE > /path/to/file/dump.sql

Создаём структуру базы без данных
mysqldump --no-data - u USER -pPASSWORD DATABASE > /path/to/file/schema.sql

Если нужно сделать дамп только одной или нескольких таблиц
mysqldump -u USER -pPASSWORD DATABASE TABLE1 TABLE2 TABLE3 > /path/to/file/dump_table.sql

Создаём бекап и сразу его архивируем
mysqldump -u USER -pPASSWORD DATABASE | gzip > /path/to/outputfile.sql.gz

Создание бекапа с указанием его даты
mysqldump -u USER -pPASSWORD DATABASE | gzip > `date +/path/to/outputfile.sql.%Y%m%d.%H%M%S.gz`

Заливаем бекап в базу данных
mysql -u USER -pPASSWORD DATABASE < /path/to/dump.sql

Заливаем архив бекапа в базу
gunzip < /path/to/outputfile.sql.gz | mysql -u USER -pPASSWORD DATABASE
или так
zcat /path/to/outputfile.sql.gz | mysql -u USER -pPASSWORD DATABASE

Создаём новую базу данных
mysqladmin -u USER -pPASSWORD create NEWDATABASE

Удобно использовать бекап с дополнительными опциями -Q -c -e, т.е.
mysqldump -Q -c -e -u USER -pPASSWORD DATABASE > /path/to/file/dump.sql, где:

  • -Q оборачивает имена обратными кавычками
  • -c делает полную вставку, включая имена колонок
  • -e делает расширенную вставку. Итоговый файл получается меньше и делается он чуть быстрее

Для просмотра списка баз данных можно использовать команду:

mysqlshow -u USER -pPASSWORD

А так же можно посмотреть список таблиц базы:
mysqlshow -u USER -pPASSWORD DATABASE

Для таблиц InnoDB надо добавлять —single-transaction, это гарантирует целостность данных бекапа.
Для таблиц MyISAN это не актуально, ибо они не поддерживают транзакционность.

Подробнее

Общие факты

  • Полезно под каждую базу на боевом сервере создавать своего пользователя
  • Кодировка базы может быть любой, если она UTF8
  • В большинстве случаев лучше использовать движок InnoDB
  • В php лучше забыть про сильно устаревшее расширение mysql и по-возможности использовать pdo или mysqli
  • Новую копию MySQL всегда можно настроить и оптимизировать
  • Без особой нужды не стоит открывать MySQL наружу. Вместо этого можно сделать проброс портов
    ssh -fNL LOCAL_PORT:localhost:3306 [email protected]_HOST
Работа с данными
Числа

  • На 32-битных системах практически нет смысла ставить для типа INTEGER свойство UNSIGNED, так как такие большие числа в php не поддерживаются.
    На 64-битных системах, php поддерживает большие числа, вплоть до MySQL BIGINT со знаком.
  • Связанные таблицы («Foreign keys») должны иметь полное сходство по структуре ключей. Т.е. если у нас на одной таблице для поля указано «INTEGER UNSIGNED DEFAULT 0 NOT NULL» то и на другой должно быть указано аналогично
  • Для хранения булевых значений, нужно использовать TINYINT(1)
  • А деньги лучше хранить в DECIMAL(10, 2), где первое число обозначает количество всех знаков, включая запятую, а второе — количество знаков после запятой. Итого, у нас получится что DECIMAL(10,2) может сохранить 9999999,99
Строки

  • В старых версиях (до 5.0.3) VARCHAR была ограничена 255 символами, но сейчас можно указывать до 65535 символов
  • Помните, что тип TEXT ограничен только 64 килобитами, поэтому что бы сохранять «Войну и Мир» пользуйтесь «LONGTEXT»
  • Самая правильная кодировка для вашей БД UTF8
Даты

Не забывайте, что
  • DATE, TIME, DATETIME — выводятся в виде строк, поэтому поиск и сравнение дат происходит через преобразование
  • TIMESTAMP — хранится в виде UNIX_TIMESTAMP, и можно указать автоматически обновлять колонку
  • Сравнивая типы данных DATETIME и TIMESTAMP, не забывайте делать преобразование типов, например:
    SELECT * FROM table WHERE `datetime` = DATE(`timestamp`)
Перечисления

  • Для перечислений правильно использовать тип ENUM
  • Правильно пишется так: ENUM(‘мама’, ‘мыла’, ‘раму’)
  • Можно ставить значение по-умолчанию, как и для любой строки
  • В базе поле с перечислением хранится как число, поэтому скорость работы — потрясающе высокая
  • Количество перечислений ~ 65 тысяч

dev.mysql.com/doc/refman/4.1/en/storage-requirements.html
help.scibit.com/mascon/masconMySQL_Field_Types.html

Отладка
  • Если запросы тормозят, то можно включить лог для медленных запросов в /etc/mysql/my.cnf
  • А потом оптимизировать запросы через EXPLAIN
  • И наблюдать за запросами удобно через программу mytop

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

Полезные команды MySQL « Gentoo Way


Авторизация на сервере (из консоли),
-h
при необходимости авторизации на удалённом сервере

mysql -h hostname -u root -p

Создание БД

mysql> create database `databasename`;

Создание БД с указанием необходимой кодировки

mysql> create database `databasename` default character set ‘utf8’ collate ‘utf8_unicode_ci’;

Получить список всех БД на сервере
Переключится на БД
Получить список таблиц в базе
Посмотреть структуру таблицы

mysql> describe `table name`;

Ещё один вариант

mysql> show columns from `table name`;

Удалить БД

mysql> drop database `database name`;

Удалить таблицу

mysql> drop table `table name`;

Показать все данные в таблице

mysql> SELECT * FROM `table name`;

Показать строки, где поле `field name` имеет значение «whatever«.

mysql> SELECT * FROM `table name` WHERE `field name` = ‘whatever’;

Показать строки с именем «Bob» и номеном «3444444»

mysql> SELECT * FROM `table name` WHERE name = ‘Bob’ AND phone_number = 3444444;

Показать строки с номером «3444444» не содержащие имени «Bob» отсортированные по номеру.

mysql> SELECT * FROM `table name` WHERE name != ‘Bob’ AND phone_number = 3444444 order by phone_number;

Показать записи с именем, начинающимся на «bob» и номером 3444444

mysql> SELECT * FROM `table name` WHERE name like ‘Bob%’ AND phone_number = 3444444;

Верннуть все данные с именем, начинающемся на «bob» и номером 3444444 ограничить вывод пятью первыми строками

mysql> SELECT * FROM `table name` WHERE name like ‘Bob%’ AND phone_number = 3444444 limit 0,5;

Используем регулярное выражение. Для регистрозависимого выбора используйте «REGEXP BINARY». Данный запрос найдёт все записи, начинающиеся на «a»

mysql> SELECT * FROM `table name` WHERE rec RLIKE ‘^a’;

Показать уникальные записи

mysql> SELECT DISTINCT `column name` FROM `table name`;

Показать выбранные колонки отсортированные от а до я (ASC) или от я до а (DESC)

mysql> SELECT `col1`,`col2` FROM `table name` ORDER BY `col2` DESC;

Вернуть количество строк в таблице.

mysql> SELECT COUNT(*) FROM `table name`;

Просуммировать все числовые поля таблицы

mysql> SELECT SUM(*) FROM `table name`;

Объединение таблиц. Как работает JOIN (в картинках)

mysql> select lookup.illustrationid, lookup.personid,person.birthday from lookup left join person on lookup.personid=person.personid=statement to join birthday in person table with primary illustration id;

Создание пользователя. Вход под root. Переключение на БД mysql. Создание пользователя и обновление привилегий.

mysql> use mysql;
mysql> INSERT INTO user (Host,User,Password) VALUES(‘%’,’username’,PASSWORD(‘password’));
mysql> flush privileges;

Смена пароля пользователя из консоли

mysqladmin -u username -h hostname -p password ‘new-password’

Смена пароля пользователя из консоли MySQL. Вход как root. Смена пароля. Обновление привелегий.

mysql> SET PASSWORD FOR ‘user’@’hostname’ = PASSWORD(‘passwordhere’);
mysql> flush privileges;

Восстановление пароля root пользователя. Остановить MySQL сервер. Запустить с пониженной безопасностью. Залогинится на MySQL как root. Установить новый пароль. Разлогинится и перезапустить MySQL сервер.

/etc/init.d/mysql stop
mysqld_safe —skip-grant-tables &amp;
mysql -u root

mysql> use mysql;
mysql> update user set password=PASSWORD(‘newrootpassword’) where User=’root’;
mysql> flush privileges;
mysql> quit

/etc/init.d/mysql stop
/etc/init.d/mysql start

Установка пароля root если он ещё не задавался ранее

mysqladmin -u root password newpassword

Смена пароля root

mysqladmin -u root -p oldpassword newpassword

Разрешить пользователю «Bob» подключаться к серверу c локального адреса с паролем «passwd». Войти как root. Переключиться на БД mysql. Дать привилегии. Обновить привелегии.

mysql> use mysql;
mysql> grant usage on *.* to [email protected] identified by ‘passwd’;
mysql> flush privileges;

Предоставить пользователю привилегии на БД. Авторизоваться как root. Переключиться на БД mysql. Предоставить привилегии. Обновить кеш привилегий.

mysql> use mysql;
mysql> INSERT INTO user (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> flush privileges;

или

mysql> grant all privileges on databasename.* to [email protected];
mysql> flush privileges;

Обновить информацию для существующего пользователя

mysql> use mysql;
mysql> UPDATE `user` SET Select_priv = ‘Y’,Insert_priv = ‘Y’,Update_priv = ‘Y’ where `User` = ‘user’;
flush privileges;

Удалить строки из таблицы

mysql> DELETE from `table name` where `field_name` = ‘whatever’;

Обновить кеш привилегий
Удалить колонку из таблицы

mysql> alter table `table name` drop column `column name`;

Добавить колонку в таблицу

mysql> alter table `table name` add column `new column name` varchar (20);

Переименовать колонку

mysql> alter table `table name` change `old column name` `new column name` varchar (50);

Сделать данные в колоке уникальными (если дублирующиеся уже есть — будет ошибка)

mysql> alter table `table name` add unique (`column name`);

Модифицировать колонку

mysql> alter table `table name` modify `column name` VARCHAR(3);

Удалить индекс

mysql> alter table `table name` drop index `colmn name`;

Загрузить данные в БД из CSV файла.

mysql> LOAD DATA INFILE ‘/tmp/filename.csv’ replace INTO TABLE `table name` FIELDS TERMINATED BY ‘,’ LINES TERMINATED BY ‘\n’ (field1,field2,field3);

Сделать дамп всех БД для бэкапа. Бэкап это файл с SQL командами для воссоздания всех баз.

mysqldump -u root -p —opt > /tmp/alldatabases.sql

Сделать дамп одной базы.

mysqldump -u username -p —databases databasename > /tmp/databasename.sql

Сделать дамп одной таблицы

mysqldump -c -u username -p databasename tablename > /tmp/databasename.tablename.sql

Восстановить БД (или таблицу) из бэкапа

mysql -u username -p databasename &lt; /tmp/databasename.sql

Создание таблицы, пример 1.

mysql> CREATE TABLE `table name` (
 `firstname` VARCHAR(20),
 `middleinitial` VARCHAR(3),
 `lastname` VARCHAR(35),
 `suffix` VARCHAR(3),
 `officeid` VARCHAR(10),
 `userid` VARCHAR(15),
 `username` VARCHAR(8),
 `email` VARCHAR(35),
 `phone` VARCHAR(25),
 `groups` VARCHAR(15),
 `datestamp` DATE,
 `timestamp` time,
 `pgpemail` VARCHAR(255)
);

Создание таблицы, пример 2.

mysql> CREATE TABLE `table name` (
 personid int(50) not null auto_increment primary key,
 firstname VARCHAR(35),
 middlename VARCHAR(50),
 lastname VARCHAR(50) default ‘bato’
);

Команды MySQL | MySQL

Консоль MySQL позволяет вводить как инструкции SQL, так и служебные команды MySQL, предназначеные для администрирования и использования таблиц в базах данных MySQL. К основным командам относятся SHOW, USE и CREATE.

Рассмотрим каждую из них отдельно.

Эта команда предназначена для просмотра доступных баз данных и таблиц в конкретных базах данных. Для просмотра списка баз данных необходимо ввести такую команду:

Если, например, существуют две базы данных — mysql и test (эти две базы как правило создаются автоматически при инсталляции сервера), то MySQL ответит примерно так:

+----------+
| Database |
+----------+
| mysql    |
| test     |
+----------+

Для просмотра списка таблиц используется эта же команда в таком виде:

Эта команда выдаст список таблиц в текущей базе данных:

+-----------------+
| Tables in mysql |
+-----------------+
| test            |
| mysql           |
+-----------------+

Замечание: вы можете работать только с одной базой данных в одно и то же время, поэтому в приведенном выше примере нет нужды указывать название базы данных, список таблиц которой стоит вывести, поскольку производится поиск в активной на данный момент базе.

Эта команда позволяет создавать новые базы данных. Как было сказано выше, по умолчанию сервер создает две базы данных — mysql и test. Для удобства стоит создавать новую базу данных для каждой отдельной задачи, потому что легче работать с набором таблиц, которые связаны между собой (даже если эта связь только смысловая). Создадим новую базу данных при помощи этой команды:

После этой операции будет создана новая база данных не содержащая никаких таблиц, а команда SHOW DATABASES выдаст следующее:

+----------+
| Database |
+----------+
| mysql    |
| test     |
| staff    |
+----------+

Как уже было сказано выше, в один и тот же момент только одна база данных может быть активна. Команда USE служит для выбора этой активной базы. Для перехода к некоторой базе данных необходимо выполнить следующую операцию:

Стоит отметить, что при создании новой базы данных (см. выше), новая база не становится активной автоматически — для ее использования необходимо сделать это самостоятельно.

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

Просмотр данных

Наипростейшей командой является следующая:

Эта команда подразумевает, что в активной базе данных существует таблица mysql, из которой она просто извлекает все данные и выводит их на экран.

Замечание: На SQL-команды распространяется одно ограничение, которое не имеет отношения к командам MySQL — инструкции SQL обязательно должны заканчиваться точкой с запятой. Это позволяет вводит многострочные запросы к бызе данных, что не требуется для MySQL-команд, которые как правило лаконичные и короткие.

Как вы уже наверное поняли, команда SELECT служит для просмотра данных таблиц. Ее упрощенный синтаксис таков:

SELECT <список полей> FROM <список названий таблиц> [WHERE <список условий>] [ORDER BY <список полей>];

В списке поля может быть как один элемент, так и несколько; кроме того возможно указание символа «*» (), который говорит, что следует показать все поля таблицы.

Часть WHERE … является необязательной и позволяет выбрать из таблицы строки, удовлетворяющие определенному(ым) условию(ям). Раздел ORDER BY … служит для сортировки полученных данных по определенным полям.

Вот пример более сложного запроса, демонстрирующий сказанное выше. Допустим таблица staff содержит информацию о сотрудниках некоторой организации. Этот запрос находит записи о тех из них, кто работает больше двух лет и кого не зовут Иваном.

SELECT name, project, works_since
FROM staff
WHERE
name > 'Иван' AND
works_since '1998-04-26';

Работа с MySQL в Linux

Некоторые рождены быть администраторами баз данных, а другие поручают им администрирование своих БД. Если вы относитесь ко второй группе, но вы нуждаетесь лишь в элементарных операциях, вроде создания или резервного копирования баз данных, то знайте, что выполнять эти операции намного проще, чем кажется. Давайте рассмотрим самые простые элементы администрирования баз данных MySQL.

Когда я говорю «простые», я и имею ввиду простые. Эта статья не сделает из вас профессионального администратора баз данных MySQL. Однако отсюда вы сможете почерпнуть некоторые знания о MySQL, которых вам вполне может хватить для решения задач, вроде  настройки WordPress или создания резервной копии базы данных MySQL.

Вы также можете выполнять все эти операции при помощи phpMyAdmin, что, впрочем, и делают множество людей. Так зачем же напрягаться, забираясь в дебри командной строки? Первой причиной использования командной строки является отсутствие необходимости устанавливать и поддерживать дополнительное программное обеспечение, особенно, если вы общаетесь с MySQL нечасто.

Также, умение работать с MySQL из командной строки даёт вам возможность работать с ней и из скриптов. Вы же не можете работать из скриптов с phpMyAdmin (некоторые могут, но это уже больше напоминает извращения)? Так что, если вы хотите, например, организовать еженедельное копирование ваших баз данных, то умение работать с MySQL из командной строки будет весьма кстати.

В этой статье а освещу лишь основные моменты работы с MySQL: создание баз данных и таблиц, создание пользователей, удаление баз данных и отдельных таблиц, восстановление баз данных и работу с их резервными копиями. Подразумевается, что MySQL у вас уже установлен и вы готовы начать работу с командами.

Подключение

Итак, давайте начнём с подключения к MySQL при помощи команды:

mysql -u username -p

Вместо username введите имя существующего в вашей инсталляции MySQL пользователя.

Теперь, находясь в оболочке mysql-клиента, можно увидеть список доступных БД при помощи команды:

SHOW DATABASES;

Обратите на точку с запятой в конце. Она сообщает MySQL о том, что команда завершена. Если строку не завершить этим символом, то после нажатия Enter MySQL будет ожидать ввода продолжения команды в новой строке. Такое поведение MySQL часто оказывается полезным при вводе нескольких команд за один раз.

Также имейте ввиду, что MySQL хранит историю команд. Нажмите стрелку вверх и вы увидите введённую вами ранее команду.

В случае, если вам необходимо начать работу с какой-то конкретной базой данных, воспользуйтесь командой:

USE databasename;

заменив databasename на имя нужной вам базы данных. Нужной вам базы данных не существует и вам необходимо её создать? Нет проблем!

Создание баз данных и таблиц

Создать базы данных очень просто. Просто введите в оболочке MySQL команду:

CREATE DATABASE dbname;

заменив dbname на имя создаваемой БД.

Также, вы можете воспользоваться программой mysqladmin, чтобы создать новую БД:

mysqladmin -u username -p create dbname;

Этот способ быстрее, если вам нужно лишь создать новую базу данных и, конечно, медленнее, если после создания БД вам нужно ввести ещё серию команд. Отчасти такому замедлению способствует необходимость каждый раз вводить пароль пользователя MySQL. В принципе, вы можете создать файл ~/.my.cnf, поместив в него ваше имя пользователя и пароль MySQL, но я не рекомендую вам этого делать, поскольку это значительно снизит уровень безопасности.

Утилиту mysqladmin вы можете использовать для решения многих административных задач. Например, вы можете запускать, останавливать и перезагружать сервер MySQL. Ну, к примеру, остановить MySQL-сервер по какой-то причине? Воспользуйтесь командой:

mysqladmin -u username -p shutdown

Если желаете ознакомиться со списком всех доступных команд mysqladmin, воспользуйтесь ключом —help:

mysqladmin --help

Чтобы создать таблицу в БД, используется инструкция CREATE TABLE table_name, после которой следует описание создаваемой таблицы. Поскольку каждая таблица обычно имеет несколько полей для хранения информации различных типов, то команды создания таблиц обычно получаются весьма длинными. Вот, например, команда, создающая таблицу для WordPress:

CREATE TABLE `wp_users` (
`ID` bigint(20) unsigned NOT NULL auto_increment,
`user_login` varchar(60) NOT NULL default '',
`user_pass` varchar(64) NOT NULL default '',
`user_registered` datetime NOT NULL default '0000-00-00 00:00:00',
`display_name` varchar(250) NOT NULL default '',
`spam` tinyint(2) NOT NULL default '0',
`deleted` tinyint(2) NOT NULL default '0',
PRIMARY KEY  (`ID`),
UNIQUE KEY `user_login` (`user_login`),
KEY `user_login_key` (`user_login`),
KEY `user_nicename` (`user_nicename`)
) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;

В этом примере я опустил некоторые инструкции ради краткости, однако основные моменты здесь отображены. После инструкции CREATE TABLE вы видите инструкции с описанием полей таблицы. Описание поля таблицы состоит из имени поля, типа данных, которые буду в нём храниться, а также определения, может ли поле иметь значение NULL (то есть, не содержать данных). Инструкции описания полей таблицы разделены запятыми, а последняя строка указывает MySQL, какой движок (в данном примере — MyISAM) использовать для работы с таблицей, а также опции, специфичные для таблицы в целом.

Не волнуйтесь, если для вас всё это кажется тарабарщиной. Всё, что вы сейчас увидели в примере выше фактически создаёт т. н. схему базы данных. Если вы пользуетесь приложениями, в комплекте которых поставляется схема БД для них, то вам вовсе необязательно знать, что именно делают инструкции, описанные в схеме.

Создание и настройка пользователя

Прежде, чем начать, вы должны знать пароль пользователя root в вашей инсталляции MySQL. Это не тот же самый root, который присутствует в вашей операционной системе. Чтобы не использовать учётную запись root для работы со всеми БД в вашей системе, вы можете создать отдельного пользователя. Например, чтобы работать с БД моего WordPress, я использую отдельного пользователя, наделённого не столь высокими привилегиями, как пользователь root.

Создать пользователя очень просто. Войдите в оболочку MySQL и дайте команду:

CREATE USER 'bob'@'localhost' IDENTIFIED BY 'password';

заменив bob на имя нужного вам пользователя, а password на пароль пользователя.

Однако, созданный пользователь не сможет делать ничего полезного до тех пор, пока ему не предоставить необходимые привилегии в базам данных. Например, если вы хотите дать пользователю bob полный доступ к базе данных wordpress_db, достаточно дать команду:

GRANT ALL PRIVILEGES ON wordpress_db.* to 'bob'@'localhost';

Вы можете ограничить перечень операций, которые будет разрешено выполнять указанному пользователю. Например, вы можете разрешить лишь операции SELECT, INSERT и DELETE. Подробнее узнать об этом вы можете в соответствующем разделе руководства MySQL.

Создание дампа базы данных

Базы данных MySQL хранятся на диске в двоичном виде в файлах с данными, индексных файле и файлах, описывающих структуру таблиц. Таким образом, каждая БД MySQL хранится в своём каталоге, расположенном в /var/lib/mysql, плюс три файла для каждой таблицы и файл .opt, содержащий параметры БД.

Конечно, можно организовать резервное копирование баз данных, путём простого копирования двоичных файлов, описанных выше, однако гораздо удобнее работать с дампами БД. Как это делается? Очень просто. MySQL имеет утилиту, называемую mysqldump. Например, чтобы сделать дамп БД wordpress_db, вы можете использовать команду:

mysqldump -u username -p wordpress_db > wordpress.sql

которая сделает дамп БД wordpress_db в текстовом виде и сохранит его в файле wordpress.sql. Созданный текстовый файл будет содержать SQL-инструкции, выполнив которые, можно будет воссоздать базу данных, и будет иметь больший размер, нежели размер двоичных файлов БД. Например, размер моей БД WordPress составляет 39 мегабайт, в то время как дамп этой БД получился размером в 41 мегабайт. Это несколько больше размера БД в двоичном виде, поскольку дамп содержит некоторую избыточную информацию.

Также mysqldump может создавать дампы не всей БД, а отдельных таблиц.

Восстановить БД из дампа ещё проще. Давайте представим, что необходимо восстановить базу данных с именем wordpress_db из файла wordpress.sql, который мы создали ранее.  Всё, что нам понадобится для этого, это имя базы данных, путь к файлу дампа и имя пользователя MySQL, имеющего достаточные привилегии для этого:

mysql -u user -p wordpress_db < wordpress.sql

База данных, дамп которой вы собираетесь загрузить, должна существовать к моменту восстановления. Так, если вы переносите базы данных с одного хоста на другой при помощи дампов, вам нужно прежде создать пустые базы данных, и только потом загружать в них дампы.

Итоги

Конечно, для полноценного администрирования MySQL вы должны знать гораздо больше. Как я уже говорил, можно вполне неплохо администрировать MySQL и при помощи phpMyAdmin. В будущих статьях я расскажу вам о нём, а также о более продвинутом использовании MySQL. А пока, я надеюсь, это руководство станет полезным для пользователей, которых интересуют лишь простые операции с MySQL, знание которых не требует квалификации администратора баз данных.

По мотивам Linux.Com

MySQL | Русскоязычная документация по Ubuntu

MySQL — свободная СУБД для малых и средних приложений. Входит в состав LAMP и XAMPP.

Версии MySQL в Ubuntu

Ubuntu MySQL
12.04 LTS (Precise) 5.5
14.04 LTS (Trusty) 5.5, 5.6
15.10 (Wily) 5.6
16.04 LTS (Xenial) 5.7

Установка

MySQL есть в репозиториях Ubuntu. Он разбит на несколько пакетов.

  • Для того чтобы установить MySQL сервер выполните команду:

    sudo apt-get install mysql-server

    При установке конфигурационный скрипт запросит пароль для администратора (root) базы данных.

  • Для того чтобы установить консольный клиент MySQL выполните команду:

    sudo apt-get install mysql-client
  • Для того чтобы установить модуль для работы с MySQL в PHP выполните команду:

    sudo apt-get install php5-mysql

Настройка

Конфигурация сервера MySQL содержится в файле /etc/mysql/my.cnf.

Доступ к серверу из сети

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

bind-address            = 127.0.0.1

на

#разрешить подключатся с любого хоста
bind-address            = 0.0.0.0
#разрешить подключатся только с указанного IP
bind-address            = 192.168.1.23

Кодировки

В данном разделе используется распространённое решение проблемы с кодировкой. Стоит помнить, что данное решение не является правильным, хоть и помогает временно решить проблему. Для правильного использования кодировки создавайте или храните таблицы в любой удобной для хранения в СУБД кодировке, а вот клиент должен подключаться к СУБД с указанием той кодировки, с которй выводится текст или производится обработка данных.

По-умолчанию в Ubuntu MySQL устанавливается с кодировкой latin1. В этом можно убедиться посмотрев вывод запроса:

SHOW VARIABLES LIKE 'char%';
character_set_client   latin1                      
character_set_connection latin1                    
character_set_database    latin1                    
character_set_filesystem   binary                   
character_set_results    latin1                    
character_set_server     latin1                   
character_set_system    utf8                       
character_sets_dir       /usr/share/mysql/charsets/

В связи с этим, даже используя при работе с сервером команду

SET names utf8;

и используя при создании таблиц

...DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

невозможно добиться полной поддержки кодировки utf8:

character_set_client    utf8                        
character_set_connection  utf8                       
...                    
character_set_server        latin1                  
...            
character_sets_dir         /usr/share/mysql/charsets/

Кодировка по-умолчанию все равно останется latin1, что неудобно и может привести к ошибкам.

Чтобы сервер сразу загружался с нужной кодировкой, необходимо отредактировать файл /etc/mysql/my.cnf:

sudo nano -w /etc/mysql/my.cnf

В секцию [mysqld] добавьте следующие строки:

skip-character-set-client-handshake
character-set-server = utf8
init-connect='SET NAMES utf8'
collation-server=utf8_general_ci

Так же желательно установить кодировку для клиента и mysqldump. Для этого в секциях [client] и [mysqldump] необходимо добавить строчку:

default-character-set=utf8

Перезагрузите сервер MySQL:

sudo service mysql restart

После этого список переменных будет выглядеть так:

character_set_client      utf8                     
character_set_connection   utf8               
character_set_database      utf8                
character_set_filesystem  binary                    
character_set_results        utf8                        
character_set_server         utf8                        
character_set_system       utf8                        
character_sets_dir          /usr/share/mysql/charsets/

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

Администрирование

Восстановление забытого пароля для root’a

Схожая проблема возникает если не задать пароль при установке MySQL, в этом случае mysql использует плагин unix-socket.

  1. Остановите mysqld:

    sudo service mysql stop
  2. Запустите mysqld с параметрами --skip-grant-tables --user=root:

    sudo mysqld --skip-grant-tables --user=root

    Если команда не сработает, добавьте строку «skip-grant-tables» в секцию «[mysqld]» файла /etc/mysql/mysql.conf.d/mysqld.cnf. Затем выполните sudo service mysql restart. После выполнения операций удалите эту строку.

  3. Подключитесь к MySQL-серверу командой:

    mysql -u root
  4. Перезапустите демона:

    sudo service mysql restart

Теперь можете проверить вход под root с новым паролем:

mysql -u root -p

Резервное копирование

Для создания резервных копий существует специальная утилита mysqldump. Основные ее параметры приведены в таблице:

Параметр Описание Пример
-u<user> Пользователь, от лица которого будет производится дамп баз данных. -uroot
-p<password> Пароль пользователя. Пароль необязательно указывать, достаточно упомянуть этот параметр для того, чтобы утилита знала что подключение требует пароля. -ppassword
-p
-h<host> Хост, на котором расположена база данных. -h227.0.0.1
-A Создать бекап всех баз данных. -A
-B <databases> Базы данных, которые нужно забэкапить. -B db1 db2 db3
--tables <tables> Таблицы, которые нужно забэкапить. Перекрывает действие ключа -B --tables db1.table1 db1.table2 db2.table3
-d Создать бекап структуры таблиц. Содержимое таблиц скопировано не будет. -d
--skip-extended-insert Не использовать многострочные INSERT-записи при создании дампа. --skip-extended-insert
-w'where_clause Создавать дамп только тех строк, которые попадают под условие. -w'Id > 10 AND Id < 100

Отключение и включение автозагрузки сервиса

Начиная с версии Ubuntu 15.04 отключение и включение сервисов возможно одной командой, без редактирования конфигов. В примерах команд ниже слово «SERVICE» следует заменить на «mysql».

Узнать стоит ли сервис в автозагрузке:

$ systemctl is-enabled SERVICE

Убрать сервис из автозагрузки в Ubuntu-16.04:

$ sudo systemctl disable SERVICE

Добавить сервис в автозагрузку в Ubuntu-16.04:

$ sudo systemctl enable SERVICE

MySQL Workbench

MySQL Workbench – инструмент для визуального проектирования баз данных. MySQL Workbench существует в двух вариантах:

  • Community Edition – бесплатная версия, распространяемая под лицензией GPL3
  • Standard Edition – платная версия, включающая в себя некоторые дополнительные возможности.

MySQL Workbench можно скачать с официального сайта http://www.mysql.com/downloads/workbench/.

Пакет вложенный на официальном сайте не подходит для Ubuntu 12.04 и выше. Это связано с тем, что пакет libzip1, прописанный в зависимостях был исключен из репозиториев. Как временное решение используйте PPA ppa:olivier-berten/misc .

Ссылки

Работа с mysql через консоль

День добрый, друзья! 🙂 Для подключения к mysql наберите

mysql -h 127.0.0.1 -u root -p  
  • h — хост базы данных, если коннектимся к локальной базе (по ip 127.0.0.1), этот параметр можно опустить
  • u — имя пользователя
  • p — пароль, его нужно будет ввести после нажатия enter

Например, если нужно законнектиться к локальной быдухе под root`ом и пароль у него не установлен (пустой пароль — это плохо), достаточно написать

mysql -u root

Если на экране появляется приветствие mysql, то всё прошло ok.

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 344
Server version: 5.5.28-0ubuntu0.12.04.3 (Ubuntu)

Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

Для выхода из командной строки mysql можно написать exit, в linux достаточно нажать ctrl+C. Теперь можно писать любые mysql-запросы. Чтобы запрос выполнился, в конце обязательно нужно поставит точку с запятой «;». При написании длинных запросов удобно делать enter`ом переход на следующую строку. А после полного написание запроса поставить «;» и нажать «enter».

Для работы с конкретной базой данных нужно её выбрать с помощью оператора use. Показать все базы данных:

show databases;

Результатом будет что то вроде этого:

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| jeka               |
| linky              |
| mysql              |
| performance_schema |
| phpmyadmin         |
| test               |
+--------------------+
7 rows in set (0.00 sec)

Выбрать базу данных jeka:

mysql> use jeka
Database changed

Посмотреть названия всех таблиц в конкретной базе данных (после выполнения use):

mysql> show tables;

Просмотреть структуру таблицы (имена и тип полей):

mysql> describe post_estimations;
+------------+---------------------+------+-----+---------+-------+
| Field      | Type                | Null | Key | Default | Extra |
+------------+---------------------+------+-----+---------+-------+
| post_id     | int(10) unsigned    | YES  | MUL | NULL    |       |
| user_id     | int(10) unsigned    | YES  | MUL | NULL    |       |
| estimation | float(2,1) unsigned | NO   |     | NULL    |       |
| date         | int(10) unsigned    | NO   |      | NULL    |       |
+------------+---------------------+------+-----+---------+-------+
4 rows in set (0.00 sec)

Достать информацию о юзере с id=22:

mysql> SELECT * FROM users WHERE id=22;

Бэкап структуры таблицы, а точнее sql-запрос на её создание

show create table table_name;

Если в конце запроса поставить не ; а \G, то результат будет показан другим образом — иногда весьма удобно, если таблица имеет много полей:

select * from update__v4_errors where id = 1102003\G

Посмотреть, какие запросы выполняются в данный момент на сервере MySQL:

show processlist;

Учтите, что будут отображены еще не выполненные (активные) запросы, поэтому show processlist; актуальная команды только для нагруженных БД, в других случаях маловероятно, что команда что то покажет.

Подробнее о том, как изменять структуру mysql-таблиц (alter table).

Как сделать бэкап базы mysql через консоль Linux?

Сделать бэкап базы database в файл dump_name.sql

mysqldump -u [username] -p [password] [database] > [dump_name.sql]

[username] – имя пользователя который имеет доступ к базе данных.
[password] – пароль пользователя.
[database] – имя базы данных.
[dump_name.sql] – имя файла, дампа на выходе.

Развернуть базу из файла через командную строку

mysql -u [username] -p [password] [database] < [dump_to_restore.sql]

[username] – имя пользователя который имеет доступ к базе данных.
[password] – пароль пользователя.
[database] – имя базы данных.
[dump_to_restore.sql] – имя файла, из которого поднимаем базу

Сделать дамп структуры одной таблицы mysql (без данных):

mysqldump -u[user] -p[password] -h[host] [database] [table_name] --no-data > /path/dump_name.sql

Например, задампим таблицу users из базы данных mydatabase:

mysqldump -uroot mydatabase users > users.dump.sql

Развернуть mysql-dump в БД с именем database_name:

mysql -uroot database_name < users.dump.sql

 

Ещё одна интересная штука. Выполнять из консоли, не требуется предварительно подключаться к mysql (mysql>). Вывести список таблиц базы данных, не подключаясь непосредственно к mysql:

mysql -uroot -e 'show tables' database_name && echo done
mysql> show variables like '%incr%';

Заключение

Может показаться, что писать запросы в командной строке не удобно. Но это заблуждение. На слабых машинах phpmyadmin работает не так шустро как хотелось бы. Тем более не на всех серверах стоят морды с phpmyadmin, adminer и т.д. Linux + mysql в терминале реально повысили мою производительность.

Читайте, также:

команд MySQL с примерами — LinuxMoz

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

Обратите внимание, что эта статья содержит команды и примеры для клиента командной строки mysql, она не содержит информации для phpMyadmin или аналогичного программного обеспечения на основе графического интерфейса.

MySQL Установить пароль root

По умолчанию MySQL не имеет установленного пароля, это может быть хорошо для частной среды разработки, но неприемлемо для производственных серверов.Вы можете установить пароль root mysql различными способами, но ниже приведен хороший простой метод, который работает:

 1
 
  mysqladmin -u пароль root ВАШ НОВЫЙ ПАРОЛЬ
  

Установка / изменение паролей пользователей MySQL из оболочки Linux

 1
 
  mysqladmin -u имя пользователя -h ваш-mysql-host -p пароль 'новый пароль'
  

Теперь вы сможете перезапустить MySQL и войти в систему с новым паролем root.

Как подключиться к MySQL

Чтобы подключиться к локальному серверу MySQL из командной строки, введите:

Если вам необходимо войти на удаленный сервер MySQL, вы можете подключиться к серверу по SSH и войти в систему или использовать следующую команду (если сервер разрешает внешние подключения):

 1
 
  mysql -h имя хоста -u root -p
  

MySQL Создать базу данных

Следующая команда создаст новую базу данных MySQL:

 1
 
  создать базу данных example_db;
  

Резервное копирование базы данных MySQL с помощью mysqldump

Резервное копирование базы данных MySQL в плоский файл называется «сбросом базы данных». Есть несколько способов выполнить эту задачу. Вот несколько методов, которые я использую.

Базовый mysqldump в файл .sql:

 1
 
  mysqldump -u root -p имя-базы данных> /tmp/database-backup.sql
  

Вы также можете выгрузить базу данных и сжать на лету, пропустив ее через gzip:

 1
 
  mysqldump -u root -p имя-базы-данных | gzip -v> база данных-backup.sql.gz
  

Mysqldump удаленная база данных и передача по SSH с использованием сжатия gzip

Обратите внимание, что вы должны выполнить следующую команду на удаленном сервере, который в настоящее время обслуживает базу данных, поэтому вы эффективно отправляете базу данных на локальный компьютер.

Mysqldump удаленной базы данных mysql на локальный компьютер, используя сжатие SSH и gzip (быстрый способ создания резервной копии удаленной базы данных). :

 1
 
  mysqldump -u root -p имя-базы-данных | gzip -c | ssh [защита электронной почты] 'cat> /tmp/database-backup.sql.gz'
  

Дамп всех баз данных MySQL на сервере

Если вы хотите сбросить все базы данных на сервере в один файл дампа, введите:

 1
 
  mysqldump -u root -p ваш-root-пароль --opt> / tmp / databases.sql
  

Mysqldump и таблицы пропуска

При выполнении неприятной миграции phpBB я столкнулся с задачей сброса базы данных MyISAM с некоторыми сломанными таблицами, вы получите ошибку «mysqldump: Error 1194» или что-то подобное:

 1
 
  mysqldump: Ошибка 1194: Таблица «phpbb_sessions» помечена как сбойная и должна быть восстановлена ​​при сбросе таблицы «phpbb_sessions» в строке: 37 71.0%
  

Лучший вариант, если вам нужно сделать резервную копию в текущем состоянии, — это указать mysqldump пропустить таблицы с помощью:

 1
 
  mysqldump -u имя пользователя -p ваша-база данных --ignore-table = your-database.broken-table> your-database.sql
  

Если вам нужно пропустить более одной таблицы, вы можете просто добавить несколько, например, ниже:

 1
 
  mysqldump -u имя пользователя -p ваша-база данных --ignore-table = ваша-база данных.сломанная таблица --ignore-table = ваша-база данных.broken-table2> ваша-база данных.sql
  

Если у вас есть резервная копия, я бы порекомендовал восстановить таблицы.

Дамп определенной таблицы из базы данных mysql

 1
 
  mysqldump -c -u username -p your-pass имя-базы-данных имя-таблицы> /tmp/db-name.table-name.sql
  

Импорт базы данных MySQL

Простой импорт базы данных mysql из файла.sql файл:

 1
 
  mysql -u имя пользователя -p -h localhost имя-базы-данных  

Импортировать базу данных mysql из .sql.gz

 1
 
  zcat database-backup.sql.gz | mysql -u root -p имя-базы данных
  

Импортируйте файл .sql из командной строки mysql (вы можете выводить вывод на консоль при импорте, это удобно, если вы получаете ошибку импорта из mysql), сначала выберите базу данных mysql, в которую хотите импортировать и запустите:

Выберите базу данных в MySQL

Как выбрать базу данных в mysql:

Показать таблицы в базе данных

Сначала выберите базу данных, которую вы хотите использовать, и запустите следующее, чтобы показать таблицы в базе данных mysql:

Создать пользователя MySQL

В следующем примере создается пользователь MySQL с именем «jesus» с паролем «jedimaster»:

 1
 
  использование гранта на *.* к jesus @ localhost, указанному 'jedimaster';
  

Затем вам необходимо предоставить пользователю разрешение на доступ к вашей базе данных:

 1
 
  предоставить все привилегии на heaven_db. * Jesus @ localhost
  

Вышеупомянутое позволит разрешить пользователю «jesus» доступ к базе данных «heaven_db».

Если вы хотите, чтобы «Иисус» имел доступ ко всем базам данных на сервере, введите:

.

Linux MySQL Введение с помощью и примерами

Обновлено: 30.04.2020 компанией Computer Hope

MySQL - это мощная стандартизированная, проверенная временем система баз данных. Его может быть сложно использовать, если вы не знакомы с некоторыми основными концепциями и парадигмами.

Чтобы узнать, как начать использовать MySQL, выполните действия, описанные в этом руководстве.

Установка MySQL

Есть много разных способов установить MySQL. Если вы работаете в системе, которая использует диспетчер пакетов, например APT, RPM или dpkg, вы можете установить MySQL из пакета для конкретной системы.Или вы можете установить общие двоичные файлы, которые не оптимизированы для вашей системы, но должны работать нормально. Или вы можете скомпилировать исходный код самостоятельно.

Как минимум, вам потребуется установить клиент MySQL и сервер MySQL. Они могут работать в одной или разных системах.

Установка MySQL с использованием APT

Если вы используете Ubuntu, Debian или другую систему, которая использует управление пакетами APT, пакеты, которые вы хотите установить, называются mysql-client и mysql-server .

Мы будем использовать apt-get для установки пакетов, а при установке мы добавим нашим командам префикс sudo , чтобы запускать их с привилегиями root.

Для установки клиента мы можем использовать команду:

 sudo apt-get установить mysql-client 

… и в системе, которая будет функционировать как сервер MySQL, мы можем установить серверное программное обеспечение с:

 sudo apt-get установить mysql-server 

… или, если оба будут работать в одной системе, мы можем установить их обе с помощью одной команды:

 sudo apt-get установить mysql-client mysql-server 
Запись

Когда пакет сервера будет установлен, нам будет предложено установить пароль администратора MySQL.Сбросить этот пароль непросто, поэтому, когда вы его установите, тщательно запомните.

Если вы хотите установить определенную версию MySQL, укажите номер версии в имени пакета. Например,

 sudo apt-get установить mysql-client-5.5 

… установит клиент для MySQL версии 5.5 . Вы можете проверить, какие версии доступны, используя инструмент apt-cache для поиска частичного имени пакета, например:

 apt-cache поиск mysql-client 

… отобразит все пакеты с mysql-client в имени.

После того, как apt-get установит пакеты и их зависимости, будет создана исходная база данных, и файл конфигурации будет создан по адресу /etc/mysql/my.cnf . Сценарий инициализации для запуска и остановки службы MySQL будет установлен по адресу /etc/init.d/mysql . После установки сервер запустится автоматически.

Вы можете вручную запускать и останавливать сервер с помощью команды service . Например:

 служба sudo запуск mysql 

… попытается запустить сервер MySQL, и:

 служба sudo mysql stop 

… попытается остановить это.

Установка MySQL с RPM

Если вы используете Red Hat, Fedora, CentOS или другую систему, которая использует управление пакетами RPM, вам необходимо установить три основных пакета: mysql для клиентских инструментов, mysql-server для сервера и связанных инструментов и mysql-libs для библиотек MySQL, которые необходимы, если вы собираетесь подключаться к серверу MySQL с использованием Perl, Python или других языков.

Чтобы установить пакеты RPM, используйте команду yum .Например,

 sudo yum установить mysql mysql-server mysql-libs 

… установит все три пакета в единую систему. Образец файла конфигурации будет установлен в папку /etc/my.cnf , а сценарий инициализации для запуска и остановки сервера будет установлен в /etc/init.d/mysqld . Чтобы запустить службу (называемую mysqld для демона MySQL), используйте команду service . Например:

 сервис mysqld start 

… запустит демон сервера MySQL и:

 служба mysqld stop 

… остановит это.

Установка MySQL из пакета Debian

Если вы хотите установить двоичные файлы MySQL с помощью пакета Debian, вы можете загрузить файл .deb по этому URL-адресу. Для установки пакета используйте утилиту dpkg .

Например, чтобы установить пакет с именем mysql-apt-config_0.3.2-1debian7_all.deb , мы должны использовать эту команду:

 судо dpkg -i mysql-apt-config_0.3.2-1debian7_all.deb 

Вам также может потребоваться установить библиотеку libaio , если она еще не установлена ​​в вашей системе.Это обеспечивает необходимое программное обеспечение для включения асинхронного ввода / вывода. Самый простой способ установить эту библиотеку - использовать apt-get , например:

 sudo apt-get установить libaio1 

Остальные детали этого типа установки будут идентичны установке MySQL с использованием APT (имя и расположение сценария инициализации и т. Д.).

Установка общих двоичных файлов из архива tar

Установка общих двоичных файлов MySQL из архива немного сложнее, но если вы не используете диспетчер пакетов и не хотите компилировать из исходного кода, вот как вы должны это сделать.

Сначала загрузите архив. Его можно найти по этому URL-адресу. Выберите соответствующее программное обеспечение для вашей ОС и ЦП и загрузите файл tar.gz . Убедитесь, что у вас установлена ​​соответствующая версия библиотек C ( glibc ); например, MySQL версии 5.6.21 требует glibc 2.5 . Вы можете определить, какую версию glibc использует ваша ОС, с помощью следующей команды:

 ldd - версия 

Это даст вам результат, похожий на следующий:

 ldd (Debian GLIBC 2.19-13) 2,19 

Здесь установлена ​​glibc версии 2.19 , поэтому любая загружаемая нами версия MySQL также должна использовать эту версию. Версия glibc будет указана при загрузке MySQL.

Если вы не можете найти версию MySQL, которая использует вашу текущую версию glibc, рекомендуется найти другой способ установки MySQL, например методы диспетчера пакетов, перечисленные выше. Обновление glibc вручную очень рискованно, потому что от него зависят другие программы.

Если вы найдете версию, которая соответствует вашей версии glibc, вот шаги для настройки вашей системы и установки MySQL из tarball.

Во-первых, вам необходимо создать группу mysql , если она еще не существует. Вы можете узнать, существует ли он:

 вырезать -d: -f1 / etc / group | grep mysql 

Если группа mysql уже существует, приведенная выше команда напечатает:

 MySQL 

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

 sudo group добавить mysql 

Теперь, когда добавлена ​​группа mysql , вам нужно будет создать пользователя с именем mysql .Сначала проверьте, существует ли он уже:

 вырезать -d: -f1 / etc / passwd | grep mysql 

Если эта команда не возвращает:

 MySQL 

… тогда вам нужно будет создать пользователя mysql и добавить его в группу mysql :

 sudo useradd -r -g mysql mysql 

Далее мы распакуем tar-архив MySQL. Предположим, что файл называется mysql-5.1.73-linux-x86_64-glibc23.tar.gz и расположен в каталоге / home / yourusername / downloads .

Сначала выберите, где установить MySQL. Здесь мы выберем каталог / usr / local , который является стандартным расположением. В нашей установке для внесения изменений в этот каталог требуются привилегии root, поэтому мы будем выполнять многие из следующих команд, используя sudo .

Сначала мы с cd по / usr / local :

 cd / usr / local 

Теперь мы распакуем tar-архив в этот каталог, что создаст установочный каталог, содержащий все содержимое tarball:

 tar zxvf / home / yourusername / downloads / mysql-5.1.73-Linux-x86_64-glibc23.tar.gz 

Затем мы создадим символическую ссылку на этот каталог с именем mysql , используя команду ln :

 ln -s mysql-5.1.73-Linux-x86_64-glibc23 mysql 

Теперь мы отредактируем файл конфигурации, создадим основные базы данных, запустим сервер MySQL и установим пароли для основных пользователей MySQL.

Сначала мы поместим cd в наш базовый каталог MySQL:

 компакт-диск / usr / местный / mysql 

Этот каталог содержит несколько важных подкаталогов.Ключевыми каталогами для наших целей являются bin , который содержит клиентскую и серверную программы, и скрипты , содержащий программу mysql_install_db , которую мы будем использовать для инициализации базы данных, содержащей таблицы предоставления, в которых хранятся разрешения доступа к серверу. .

Мы должны добавить / usr / local / mysql к нашей переменной окружения PATH . Если вы используете bash (командная оболочка по умолчанию в большинстве версий Linux), вам нужно добавить строку PATH = $ PATH: / usr / local / mysql / bin в файл .profile в вашем домашнем каталоге, который bash запускается каждый раз, когда вы входите в систему:

 echo 'ПУТЬ = $ ПУТЬ: / usr / local / mysql / bin' >> ~ / .profile 

Или, если вы хотите добавить это в переменную среды PATH для всех пользователей в вашей системе, вы можете использовать эту команду:

 sudo echo 'ПУТЬ = $ ПУТЬ: / usr / local / mysql / bin' >> / etc / profile 

Теперь давайте убедимся, что пользователь и группа mysql являются владельцами всего, что мы только что установили:

 sudo chown -R mysql / usr / local / mysql /.
 sudo chgrp -R mysql / usr / local / mysql /. 

Теперь мы запустим программу mysql_install_db , чтобы настроить начальные таблицы предоставления MySQL, которые определяют, как пользователи могут получить доступ к базам данных MySQL. Этот процесс выполняется автоматически в других процедурах установки, например при использовании диспетчера пакетов. Здесь мы сделаем это вручную.

 судо / usr / локальный / mysql / скрипты / mysql_install_db --user = mysql 
Запись

Если mysql_install_db неправильно определяет расположение ваших каталогов установки и данных, вы можете указать их вручную, используя эту команду:

 сценариев sudo / mysql_install_db --user = mysql --basedir = / usr / local / mysql \
                              --datadir = / usr / local / mysql / data 

Здесь обратная косая черта (« \ ») указывает, что следующая строка является частью той же команды.Вы можете опустить это при запуске команды, если хотите.

Когда mysql_install_db работает успешно, он создаст каталог данных сервера с mysql в качестве владельца. В каталоге данных он создает каталоги для базы данных, в которой хранятся таблицы предоставления и база данных test , которую вы можете использовать для тестирования MySQL. Он также создает записи таблицы привилегий для корневых учетных записей и анонимных учетных записей MySQL. У этих аккаунтов нет пропуска

.

MySQL :: Начало работы с MySQL

Установка и запуск MySQL

Есть разные способы установить MySQL. Следующие обложки самые простые способы установки и запуска MySQL на разных платформы.

  • Linux. Самый простой способ установить MySQL - использовать MySQL репозитории:

    Для дистрибутивов Linux, которые не поддерживают MySQL репозитории или упомянутые установочные пакеты выше, вы можете установить MySQL, используя общие двоичные файлы:

    Подробные инструкции, а также другие методы для установку, можно найти в Установка MySQL в Linux.

  • Microsoft Windows. Рекомендуемый способ установки MySQL в Microsoft Windows: использовать установщик MySQL; видеть Метод установки MySQL о том, как загрузите и запустите установщик MySQL. Для подробного объяснение каждого шага мастера установки см. Установщик MySQL для Windows.

    Если вы выбрали настройку MySQL как службы Windows во время процесса установки, что является вариантом по умолчанию (подробности см. в Службе Windows), сервер MySQL запустится автоматически после процесс установки завершен.

    Подробная информация об установке Windows, включая альтернативные методы установки и инструкции для устранение неполадок, можно найти в Установка MySQL в Microsoft Windows.

  • OS X. Рекомендуемый способ установки MySQL в OS X - использовать пакет установщика OS X. Видеть Установка MySQL на macOS с использованием собственных пакетов о том, как скачать и запустите установочный пакет, а как запустить MySQL сервер потом.

    Подробную информацию об установке на OS X можно найти найдено в разделе Установка MySQL на macOS.

  • Другие платформы.

.

MySQL: запуск запроса из сценария Bash или командной строки Linux

Иногда необходимо выполнить некоторые запросы MySQL из интерфейса командной строки Linux без доступа к интерактивной подсказке MySQL.

Например, когда требуется запланировать резервное копирование базы данных MySQL или автоматизировать выполнение некоторых SQL-запросов с помощью сценария Bash.

В этой статье я покажу наиболее полезные, с моей точки зрения, параметры клиента командной строки MySQL и покажу, как выполнять несколько SQL-запросов к базе данных из сценария Bash.

Дельный Совет: Список пользователей MySQL, их пароли и предоставленные привилегии из командной строки! Узнать больше →

MySQL: выполнение SQL-запросов из оболочки Linux

Выполнить SQL-запрос из командной строки Linux:

 $ mysql -u  ПОЛЬЗОВАТЕЛЬ  -p  ПАРОЛЬ  -e " SQL_QUERY " 

-p ПАРОЛЬ: Это не опечатка! Когда вы передаете его в командной строке, не должно быть пробелов между вашим паролем и -p !

Выполнить SQL-запрос к явно указанной базе данных:

 $ mysql -u  ПОЛЬЗОВАТЕЛЬ  -p  ПАРОЛЬ  -D  БАЗА ДАННЫХ  -e " SQL_QUERY " 

Выполнить SQL-запрос на явно указанном хосте:

 $ mysql -u  ПОЛЬЗОВАТЕЛЬ  -p  ПАРОЛЬ  -h  ИМЯ ХОСТА  -e " SQL_QUERY " 

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

 $ mysql -u  ПОЛЬЗОВАТЕЛЬ  -p  ПАРОЛЬ  -N -e " SQL_QUERY " 

Подавить границы таблицы:

 $ mysql -u  ПОЛЬЗОВАТЕЛЬ  -p  ПАРОЛЬ  -B -e " SQL_QUERY " 

Сохранить результат в файл:

 $ mysql -u  ПОЛЬЗОВАТЕЛЬ  -p  ПАРОЛЬ  -e " SQL_QUERY ">  ФАЙЛ  

Дельный Совет: Создайте базу данных MySQL и ПРЕДОСТАВЛЯЙТЕ ВСЕ ПРИВИЛЕГИИ пользователю! Простое и понятное руководство по MySQL с хорошими примерами! Узнать больше →

Наиболее полезные параметры MySQL при выполнении SQL-запросов из командной строки Linux или сценария Bash:

Опция Описание
- пользователь , - u Имя пользователя MySQL для использования при подключении к серверу.
- пароль , -p Пароль для использования при подключении к серверу.
- база данных , -D База данных для использования.
- хост , - h Подключиться к серверу MySQL на указанном хосте.
- пропустить имена столбцов , -N Не записывайте имена столбцов в результатах.
- партия , -B Распечатайте результаты, используя табуляцию в качестве разделителя столбцов, с каждой строкой на новой строке.

MySQL: запуск SQL-запросов из сценария Bash

Для выполнения нескольких SQL-запросов или одного многострочного SQL-запроса я использую конструкцию << EOF ... EOF .

Часть << EOF сообщает оболочке, что я собираюсь ввести многострочность до тега EOF .

Обратите внимание, что здесь не должно быть пробелов непосредственно перед вторым тегом EOF , в противном случае он будет считаться частью запроса SQL.

Кстати, вы можете переименовать EOF во что угодно, например << МОЙ_ЗАПРОС ... МОЙ_ЗАПРОС .

Дельный Совет: У вас есть бэкап? Вы ДОЛЖНЫ это иметь! Резервное копирование баз данных MySQL из командной строки! Это действительно просто! Узнать больше →

Используйте следующую конструкцию, если вам нужно выполнить несколько SQL-запросов из сценария Bash:

 mysql -u  ПОЛЬЗОВАТЕЛЬ  -p  ПАРОЛЬ  << EOF
  SQL_QUERY 1 
  SQL_QUERY 2 
  SQL_QUERY N 
EOF 

Пример сценария Bash:

 #! / Bin / bash
mysql -u root -psecret << MY_QUERY
ИСПОЛЬЗОВАТЬ mysql
SHOW столы
MY_QUERY 
.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *