- Команды MySQL в Linux
- Работа с базами, таблицами — просмотр, удаление, редактирование записей. Консоль
- Пользователи, пароли сервера MySQL — добавление, изменение пользователей и паролей. Консоль
- Резервные копии — создание, восстановление бд . Консоль
- Создание таблиц БД. Консоль
- Как выполнить запрос MySQL из командной строки Linux
- Как выполнить запрос MySQL из командной строки
- Заключение
- Похожие записи:
Команды MySQL в Linux
Ниже предоставлен список наиболее полезных и часто используемых команд MySQL с примерами.
mysql в начале строки означает, что команда выполняется после входа вMySQL.
Символ # или $ в начале строки означает, что команда выполняется из командной строки.
Что бы проверить статус сервера MYSQL выполните:
для FreeBSD:
# service mysql-server status
в CentOS / RHEL:
Что бы подключиться к серверу MySQL из консоли, если сервер MySQL находится на том же хосте:
Что бы подключиться к серверу MySQL из консоли, если сервер MySQL находится на удаленном хосте db1.example.com :
$ mysql -u username -p -h db1.example.com
Работа с базами, таблицами — просмотр, удаление, редактирование записей. Консоль
Создать базу данных на MySQL сервере:
mysql create database [databasename]
Показать список всех баз данных на сервере MySQL:
Отобразить все таблицы в базе данных:
Просмотреть формат таблицы в базе:
mysql describe [table name] ;
mysql drop database [database name];
mysql drop table [table name];
Показать все содержимое таблицы:
mysql SELECT * FROM [table name];
Отобразить столбцы и содержимое столбцов в выбранной таблице:
mysql show columns from [table 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 ';
Отобразить все записи, НЕ содержащие имя » Bob » и телефонный номер » 3444444 «, отсортированные по полю phone_number :
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 «, ограничиваясь записями с 1-ой до 5-ой:
mysql SELECT * FROM [table name] WHERE name like " Bob %" AND phone_number = ' 3444444 ' limit 1,5;
Использование регулярных выражений ( «REGEXP BINARY» ) для поиска записей. Например, для регистро-независимого поиска — найти все записи, начинающиеся с буквы А :
mysql SELECT * FROM [table name] WHERE rec RLIKE "^ a ";
Показать все уникальные записи:
mysql SELECT DISTINCT [column name] FROM [table name] ;
mysql SELECT [col1],[col2] FROM [table name] ORDER BY [col2] DESC;
Показать количество строк в таблице:
mysql SELECT COUNT(*) FROM [table name] ;
Подсчитать количество столбцов в таблице:
mysql SELECT SUM(*) FROM [table name] ;
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 );
Пользователи, пароли сервера MySQL — добавление, изменение пользователей и паролей. Консоль
Создание нового пользователя — подключение к серверу MySQL под root, переключение к базе данных, добавление пользователя, обновление привилегий:
# mysql -u root -p mysql use mysql; mysql INSERT INTO user (Host,User,Password) VALUES('%',' username ', PASSWORD(' password ')); mysql flush privileges;
Изменений пользовательского пароля из консоли на удаленном хосте db1.example.org :
# mysqladmin -u username -h db1.example.org -p password ' new-password '
Изменение пользовательского пароля из консоли MySQL — подключение под root, обновление пароля, обновление привилегий:
# mysql -u root -p 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 & # 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
Set a root password if there is on root password.
# mysqladmin -u root password newpassword
# mysqladmin -u root -p oldpassword newpassword
Установка права на подключение к серверу с хоста localhost с паролем » passwd » — подключение подroot, переключение к базе данных, установка привилегий, обновление привилегий:
# mysql -u root -p mysql use mysql; mysql grant usage on *.* to bob @localhost identified by ' passwd '; mysql flush privileges;
Установка привилегий пользователю на использование базы данных — подключение под root, переключение к базе данных, установка привилегий, обновление привилегий:
# mysql -u root -p mysql use 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 flush privileges;
mysql grant all privileges on databasename .* to username @localhost; mysql flush privileges;
Обновление информации в базе данных:
mysql UPDATE [table name] SET Select_priv = 'Y',Insert_priv = 'Y',Update_priv = 'Y' where [field name] = user';
Удаление строки в таблице:
mysql DELETE from [table name] where [field name] = 'whatever';
Обновление привилегий в базе данных:
Резервные копии — создание, восстановление бд . Консоль
Создать резервную копию (dump) всех баз данных в файл alldatabases.sql :
# mysqldump -u root -p password -opt ; /tmp/alldatabases.sql
Создать резервную копию одной базы данных в файл databasename.sql :
# mysql dump -u username -p password -databases databasename ; /tmp/databasename.sql
Создать резервную копию одной таблицы в файл databasename.tablename.sql :
# mysql dump -c -u username -p password databasename tablename ; /tmp/databasename.tablename.sql
Восстановление базы данных (или таблицы) из резервной копии:
# mysql -u username -p password databasename < /tmp/databasename.sql[/html]Создание таблиц БД. Консоль
маленькими буквами указаны имена столбцов;
ПРОПИСНЫМИ буквами - типы и атрибуты столцов;
в (скобках) - значение типа столбца.Создать таблицу, пример 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));
mysql create table [table name] ( personid INT(50) NOT NULL AUTO_INTCREMENT PRIMARY KEY, firstname VARCHAR(35), middlename VARCHAR(50), lastname VARCHAR(50) default 'bato');
Как выполнить запрос MySQL из командной строки Linux
MySQL — это популярная база данных, используемая многими веб-сайтами и организациями по всему миру. Обычно для подключения к базе данных MySQL и выполнения SQL-запросов люди заходят в консоль MySQL или в GUI-инструмент типа Workbench. Но иногда вам может понадобиться выполнить запросы MySQL непосредственно из командной строки или терминала. Иногда вам даже может понадобиться добавить его в сценарий оболочки. В этой статье мы узнаем, как запустить запрос MySQL из командной строки.
Как выполнить запрос MySQL из командной строки
Вы можете легко выполнить запрос MySQL из командной строки, используя команду MySQL вместе с опцией -e.
mysql -h [хост] -u [имя пользователя] -p [пароль] [база данных] -e [SQL_запрос]
В приведенной выше команде необходимо указать имя пользователя, пароль, имя базы данных для соединения с базой данных MySQL. После опции -e необходимо указать SQL-запрос, который будет выполняться.
Вот простой пример выполнения SQL-запроса при подключении к локальной базе данных.
mysql -utest_user -ptest_password -hlocalhost db -e "SELECT * FROM table;".
Вы также можете опустить аргумент имени базы данных ‘db’, если вы ссылаетесь на нее в SQL-запросе.
mysql -utest_user -ptest_password -hlocalhost -e "SELECT * FROM db.table;"
Добавление точки с запятой в конце SQL-запроса необязательно. Но если вы хотите выполнить несколько SQL-запросов, вам необходимо разделить их с помощью точки с запятой, как показано в следующем примере.
mysql -utest_user -ptest_password -hlocalhost -e "SELECT * FROM db.table; SELECT * from db.table2;"
Вы также можете выполнять отдельные команды MySQL с опцией -e, если хотите.
mysql -utest_user -ptest_password -hlocalhost -e "SELECT * FROM db.table;" mysql -utest_user -ptest_password -hlocalhost -e "SELECT * FROM db.table2;"
Вы также можете хранить свои SQL-запросы в файле и указать MySQL прочитать этот файл. Допустим, у вас есть файл queries.txt
SELECT * FROM db.table; SELECT * FROM db.table2;
Теперь, если вы хотите выполнить запросы в файле queries.txt, вы можете сделать это с помощью следующей команды. В этом случае MySQL будет читать входные данные из файла queries.txt.
mysql -utest_user -ptest_password -hlocalhost < queries.txt
Ключевым моментом, на который следует обратить внимание, является то, что вы должны указать ваш SQL-запрос в двойных кавычках. Если приведенный выше синтаксис команды вам не подходит, попробуйте заключить SQL-запрос в одинарные кавычки.
Также, если ваш SQL-запрос сам содержит двойные кавычки, то их нужно убрать, добавив перед ними обратную косую черту.
Результат вышеприведенного запроса будет выведен на консоль. Если вы хотите сохранить этот результат в другом файле, вам нужно будет использовать операторы перенаправления. Вот пример сохранения результата запроса MySQL в файл test.txt.
mysql -utest_user -ptest_password -hlocalhost -e "SELECT * FROM db.table;" > /home/user/test.txt
Одним из преимуществ выполнения запросов MySQL в командной строке является то, что вы можете передавать вывод другим командам Linux в соответствии с вашими требованиями. Вот простой пример, в котором мы передаем вывод запроса MySQL команде grep.
$ mysql -utest_user -ptest_password -hlocalhost -e "SELECT * FROM db.table;" | grep 'abc'
Заключение
В этой статье мы узнали, как выполнять запросы MySQL из командной строки, сохранять их вывод в файлы и даже передавать их другим командам Linux для дальнейшей обработки. Вы можете эффективно использовать их в сценарии оболочки для автоматического получения данных, их обработки и принятия мер в зависимости от полученной информации.