Инструменты пользователя

Инструменты сайта


mysql:working_via_cli

Это старая версия документа!


# Работаем с MySQL через командную строку

## Подключение к серверу MySQL 1. Для подключения к серверу mysql наберите: ```bash

$ mysql -h 127.0.0.1 -u root -p

``` где:

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

Например, если нужно подключиться к локальной БД под root'ом и пароль у него не установлен (пустой пароль - это плохо), достаточно написать ```bash mysql -u root ```

Если на экране посел этого появляется приветствие mysql, то всё прошло ok. ```mysql 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 © 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> ```

2. Для выхода из командной строки mysql можно написать exit, в linux достаточно нажать ctrl+C. ## Выполнение запросов

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

1. Показать все базы данных: ```mysql show databases; ```

Результатом будет что то вроде этого: ```mysql mysql> show databases; +——————--+

Database

+——————--+

information_schema
jeka
linky
mysql
performance_schema
phpmyadmin
test

+——————--+ 7 rows in set (0.00 sec) ```

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

```mysql mysql> use jeka Database changed ```

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

```mysql mysql> show tables; ```

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

```mysql 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) ```

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

```mysql mysql> SELECT * FROM users WHERE id=22; ```

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

```mysql show create table table_name; ```

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

```mysql select * from update__v4_errors where id = 1102003\G ```

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

```mysql show processlist; ```

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

9. Подробнее о том, как изменять структуру mysql-таблиц ([alter table](obsidian://open?vault=MarkD-Base&file=WebDev_-_HTML%2C_CSS%2C_JS_%26_Etc%2F07-01-02_-_MySQL_%D0%B8%D0%B7%D0%BC%D0%B5%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BF%D0%BE%D0%BB%D0%B5%D0%B9_%D0%B8_%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%82%D1%83%D1%80%D1%8B_%D1%82%D0%B0%D0%B1%D0%BB%D0%B8%D1%86%D1%8B)).

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

Это проблема с кодировкой. Вероятно в my.ini файле mysql-сервера не добавлено: ```mysql [mysqld] init-connect='SET NAMES utf8' ```

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

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

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

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

```mysql mysqldump -u [username] -p [password] [database] > [dump_name.sql] ``` где: - [username] – имя пользователя который имеет доступ к базе данных. - [password] – пароль пользователя. - [database] – имя базы данных. - [dump_name.sql] – имя файла, дампа на выходе.

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

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

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

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

Например, задампим таблицу users из базы данных mydatabase: ```mysql mysqldump -uroot mydatabase users > users.dump.sql ``` Развернуть mysql-dump в БД с именем database_name: ```mysql mysql -uroot database_name < users.dump.sql ```

## Вывести список таблиц базы данных, не подключаясь непосредственно к mysql

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

```mysql mysql -uroot -e 'show tables' database_name && echo done

mysql> show variables like '%incr%'; ```

#MySQL #консоль

/var/www/html/dokuwiki/data/attic/mysql/working_via_cli.1661085559.txt.gz · Последнее изменение: (внешнее изменение)