Работаем с 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 использования /G вместо; дебаг запроса.

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

show processlist;

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

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

Что делать если вижу знаки вопросов вместо текста в MySQL?

Это проблема с кодировкой. Вероятно в my.ini файле mysql-сервера не добавлено:

[mysqld]
init-connect='SET NAMES utf8'

Нужно добавить в .ini файл либо выполнить в консоли команду "SET NAMES utf8", после чего во время текущей сессии отображаться русский текст в mysql-консоли будет без проблем:

mysql> set names utf8;
Query OK, 0 rows affected (0.00 sec)

Как сделать бэкап базы 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 в терминале реально повысили мою производительность.

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

 
Поисковые запросы, по которым приходили пользователи
 
 
 
 

icon Комментарии 2

 viktor 11 лет назад
Последнее время я использую Valentina Studio для работы с MySQL. Очень хороший и бесплатный инструмент, рекомендую посмотреть. http://www.valentina-db.com/en/valentina-studio-overview
 root 11 лет назад
Viktor, спасибо. Судя по скринам, штука интересная.
Правда, уж больно много зависимостей она имеет.. Как решу проблему с зависимостями, отпишусь.

eugene-PC:www eugene$ eugene$ sudo rpm -ivh ~/Загрузки/vstudio_x64_5_lin.rpm
rpm: RPM should not be used directly install RPM packages, use Alien instead!
rpm: However assuming you know what you are doing...
ошибка: Неудовлетворенные зависимости:
ld-linux-x86-64.so.2()(64bit) нужен для vstudio-5.3.0-2.x86_64
ld-linux-x86-64.so.2(GLIBC_2.3)(64bit) нужен для vstudio-5.3.0-2.x86_64
libc.so.6()(64bit) нужен для vstudio-5.3.0-2.x86_64
libc.so.6(GLIBC_2.2.5)(64bit) нужен для vstudio-5.3.0-2.x86_64
libc.so.6(GLIBC_2.3)(64bit) нужен для vstudio-5.3.0-2.x86_64
libc.so.6(GLIBC_2.3.3)(64bit) нужен для vstudio-5.3.0-2.x86_64
libc.so.6(GLIBC_2.3.4)(64bit) нужен для vstudio-5.3.0-2.x86_64
libc.so.6(GLIBC_2.4)(64bit) нужен для vstudio-5.3.0-2.x86_64
libdl.so.2()(64bit) нужен для vstudio-5.3.0-2.x86_64
libdl.so.2(GLIBC_2.2.5)(64bit) нужен для vstudio-5.3.0-2.x86_64
libgcc_s.so.1()(64bit) нужен для vstudio-5.3.0-2.x86_64
libgcc_s.so.1(GCC_3.0)(64bit) нужен для vstudio-5.3.0-2.x86_64
libgcc_s.so.1(GCC_3.4)(64bit) нужен для vstudio-5.3.0-2.x86_64
libgdk-x11-2.0.so.0()(64bit) нужен для vstudio-5.3.0-2.x86_64
libgdk_pixbuf-2.0.so.0()(64bit) нужен для vstudio-5.3.0-2.x86_64
libglib-2.0.so.0()(64bit) нужен для vstudio-5.3.0-2.x86_64
Ваш комментарий к статье.. (для авторизованных)

ctrl+enter

icon Вход в систему

зарегистрироваться
НОВЫЕ ПОЛЬЗОВАТЕЛИ