Не могу войти в mysql через консоль

Обновлено: 02.07.2024

Делать запросы к базам данных MySQL можно не только через PHP. В комплекте с MySQL поставляется консольный клиент для подключения в серверу MySQL. Консольный — это означает, что у программы нет оконного интерфейса, а есть только интерфейс командной строки, в котором обращение к базам данных выполняется с помощью SQL запросов.

Команды для подключения к MySQL в командной строке, а уж тем более сами SQL запросы идентичны и для MariaDB. В дальнейшем для краткости я буду писать «MySQL», но везде я имею в виду «MySQL или MariaDB», поскольку в данном случае разницы между ними нет.

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

Для подключения к серверу MySQL используется команда клиентская программа, которая называется mysql.exe. Её нужно запустить, но сделать нужно не двойным кликом, как обычную программу, а из командной строки.

Начнём с того, что нажмём сочtтание клавиш Win+r и выполним

Откроется командная строка.

Теперь нам нужно перейти в папку с файлом mysql.exe. Эта папка bin в директории, где установлена ваша СУБД MySQL. К примеру, у меня MariaDB, которая установлена в папке C:\Server\bin\mariadb\. Следовательно, интересующий нас файл находится в каталоге C:\Server\bin\mariadb\bin\. Для перехода в этот каталог используется команда cd следующим образом:

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

Теперь запустим файл mysql.exe. Необязательно указывать расширение файла .exe — система сама догадается, что мы имеем ввиду. Также нам нужно использовать опцию -u и -p. После первой опции нужно указать имя пользователя — root. После второй опции — пароль для пользователя. В моём случае пароль не установлен, поэтому я запускаю без опции -p:

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

говорит о том, что мы подключены к серверу MySQL. Точнее, в моём случае мы подключены к серверу MariaDB.


Чтобы посмотреть список баз данных, введём команду:


Чтобы последующие запросы отправлялись к определённой базе данных (например, к test), используется команда USE:

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


Создадим какую-нибудь таблицу:

И вновь посмотрим содержимое базы данных test:


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

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

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

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

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

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

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

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

Достать информацию о юзере с >

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

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

mysql использования /G вместо; дебаг запроса.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Заключение

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

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


Дата добавления: 9 лет назад mysql
  • Как сделать копию структуры таблицы в mysql? Решено!
  • Как в mysql лучше всего хранить ip адрес? 1 ответ
  • Установить mysql 5.6 на travis Решено!
  • Got a packet bigger than 'max_allowed_packet' bytes - ошибка mysql Решено!
  • mysqldump только структуры таблиц 1 ответ
  • MySQL - изменение полей, структуры таблицы 0 комментариев
  • Запросы инъекции для mysql 0 комментариев
  • Доступ к mysql из-вне3 комментария
  • Mysql перенос таблиц из одной базы данных в другую 0 комментариев
  • Анализ производительности MySQL с использованием performance_schema 0 комментариев

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

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

В случае утери пароля создайте новый, выполнив следующие команды.

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

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

Зайдите пользователем root командой:

Перезагрузите сервер баз данных с учетом прав доступа командой:

Выполните вход на MySQL сервер с новым паролем:

Как просмотреть перечень ошибок MySQL сервера?

Для получения списка ошибок сервера баз данных просмотрите его лог-файлы. Для каждой ОС и файловой системы они располагаются в разных местах. Чтобы определить, где находятся лог-файлы MySQL на вашем сервере, подключитесь к серверу через консоль (например, Putty) и выполните команду, которая найдет файл my.cnf:

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


Откройте любым редактором, например vi, найденный файл и найдите строки, начинающиеся с “log” или “log-error”


Откройте редактором лог-файл по найденному пути и просмотрите ошибки.


Если в файле my.cnf нет строк, указывающих на лог-файлы, это значит, что контроль ошибок (логирование) не включен. Включите эту функцию, добавив в my.cnf строку:

Создайте его и наделите привилегиями командами:

При необходимости просмотр лог-файла можно запустить в фоновом режиме, чтобы параллельно запускать другие директивы. Для этого выполните команду:

Возможные ошибки в лог-файле и их решение

В лог-файле или в браузере выдается ошибка:


В случае ошибки запустите несколько команд:

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

Возникает ошибка вида:


Зайдите в ISPmanager, перейдите в раздел «Настройки» -> «Серверы баз данных», двойным кликом на имени сервера баз данных откройте его настройки.


Проверьте, что указанные данные в полях «Имя пользователя» и «Пароль» соответствуют тем, которые находятся в настройках сайта для подключения к этой БД.


На сайте возникает ошибка вида «Не удалось подключиться к базе данных»


Убедитесь, что сервер баз данных MySQL запущен. Зайдите в ISPmanager а раздел «Настройки» -> «Возможности» и проверьте, что в списке возможностей присутствует строка «Сервер СУБД MySQL» и лампочка в этой строке желтого цвета. Если лампочка выключена (синего цвета), то выделите строку и нажмите «Установить» на панели инструментов.



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

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

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

Не удается запустить MySQL

Попробуйте запустить MySQL через панель управления ISPmanager. Если не получилось, то подключитесь к серверу по SSH и попробуйте запустить MySQL через консоль командой:

Проверьте свободное место на диске командой


выведет, сколько места занимает каждая директория.


Если свободного места осталось мало, освободите его, очистив в первую очередь лог-файлы MySQL и других служб.

Перезапустите MySQL через консоль командами, приведенными выше.

Если проблема сохранилась, внимательно изучите записи в лог-файле MySQL, начинающиеся с [ERROR]. Например, запись Error while setting value '--read_buffer_size=256K' to 'sort_buffer_size' означает, что директива sort_buffer_size в конфигурационном файле MySQL, прописана не верно.

Статья давно не обновлялась, поэтому информация могла устареть.

Содержание

На корректно работающем VDS создание базы займет не больше 5 минут. В левом меню ISPmanager находим раздел "Базы данных" - Создать - заполнить необходимые поля - пароли рекомендуем создавать сложные.

Теперь немного о тех местах, где могут возникнуть сложности.

Раздела "Базы данных" нет в меню

Есть 2 возможных варианта и пути решения проблемы:

1)На сервере не запущен сервер баз данных MySQL:

  1. Проверить, активен ли сервис, вы можете в меню "Сервисы" панели ISPmanager. Попробуйте запустить или перезапустить его с помощью кнопок в панели.
  2. Если не помогло, перезапустите из консоли командой /etc/init.d/mysql restart для Ubuntu/Debian/Centos 6 или командой systemctl restart mariadb для Centos 7.

2) Проблемы с подключением к базе данных: Откройте пункт меню "Серверы баз данных", двойным кликом откройте свойства и нажмите "OK", ничего не меняя. Это принудительно обновит информацию о MySQL в панели управления. После этого обновите страницу - пункт "Базы данных" должен появиться.

Случается так, что пароль root от MySQL-сервера утерян, и надо установить новый. Делается следующим образом:

В Centos 6/Debian/Ubuntu:

Запускаем его без проверки таблиц прав:

Заходим root’ом без пароля:

Продолжаем для всех версий

В Centos 6/Debian/Ubuntu:

Авторизуемся как root с паролем new_password

MySQL - свободная реляционная система управления базами данных. Поиск проблем с сервисом лучше всего начинать с изучения логов. Для этого необходимо подключиться на сервер по ssh Их расположение разнится в зависимости от используемой файловой системы. В конфигурационном файле my.cnf нужно искать строки log и log-error, чтобы определить, где находятся логи. Также можно воспользоваться mysql запросом:

Если логирование не включено, сделать это можно следующим образом: Зайти в файл:

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

Выйти из файла, выполнить команды:

Следующая команда включит просмотр созданного лога в режиме реального времени(tail –f) и оставить его в фоне(&) что бы можно было параллельно запускать другие команды:

Перечень возможных проблем

Table './site/content' is marked as crashed and should be repaired

Если эта команда выдаёт ошибку, вставьте ключи раздельно

  • <USER> - имя пользователя базы данных, либо "root".
  • <PASSWORD> - заменить на пароль root от MySQL (его можно посмотреть в ISPmanager -> Настройки сервера -> Серверы баз данных -> двойной клик на MySQL)

Либо можно выполнить исправление конкретной базы данных

  • <USER> - имя пользователя базы данных, либо "root".
  • <PASSWORD> - заменить на пароль root от MySQL (его можно посмотреть в ISPmanager -> Настройки сервера -> Серверы баз данных -> двойной клик на MySQL)
  • <BD> - база данных, требуемая починки

mysql_connect() [function.mysql-connect]: Access denied for user 'user_xxx'@'localhost' (using password: YES)

Чаще всего связана с тем, что в настройках сайта указаны не верные данные(логин и/или пароль) для подключения к базе. Вариант решения: посмотреть в админ-панели сайта пользователь, пароль и название базы для подключения к базе. Зайти в ISPmanager -> настройки сервера -> кликнуть на базу, кликнуть на пользователя и в графу «Пароль» поставить пароль из админ-панели.

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

В зависимости от используемой CMS эта ошибка может по-разному выглядеть:

Подключится на сервер по SSH, выполнить:

Убедится что в ISPmanager, в разделе «Службы» лампочка mysqld горит.

В панели ISPmanager 5 нет пункта Базы данных

Это значит у вас в ISPmanager --- Серверы баз данных не создано ни одного сервера баз данных. Создайте

MySQL не запускается ни в сервисах, ни через консоль.

При запуске через консоль ошибки могут быть вида:

Проверить свободное место на диске.

Если не осталось места, удалить не нужные файлы.

Частая ситуация, когда логи сайтов разрастаются и места на диске свободного не остается, MySQL не может нормально работать(справедливо и для всех остальных сервисов – apache, exim и т.д.)

Снова пробуем перезапустить MySQL:

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

Смотрим записи с меткой [ERROR]. В логе выше, ошибка «Error while setting value '--read_buffer_size=256K' to 'sort_buffer_size'» означает, что в конфиге my.cnf не верно прописана директива 'sort_buffer_size. Этот случай приведен только для примера. В каждом конкретном случае – лог будет различаться. Ошибки могут быть самые разные. Дальнейшие действия зависят от конкретной ошибки и требуют детального разбирательства.

Решение проблем с кодировками MySQL

Чтобы решить проблему - достаточно понять логику работы. MySQL, начиная с версии 4.1, знает что такое кодировки и как с ними работать. Если до 4.0 он работал с байтами, то теперь он работает с символами.

MySQL написали шведы, поэтому кодировкой по умолчанию (сразу после установки) является latin1, а "сравнение" (последовательность букв, алфавит; влияет на сортировки) - latin1_swedish.

Итак, где кодировки указываются:

1. Кодировка конкретной базы/таблицы/столбца. Это кодировка, в которой MySQL будет хранить данные. Например, если у вас данные в cp1251, то будет большой ошибкой указывать для хранения кодировку latin1. В ней нет соответствий для русских символов, все они будут заменены на вопросы. Кодировка хранения можно задать, например, так:

Если кодировка не указана - будет использовано значение параметра default-character-set из файла /etc/my.cnf (либо latin1, если параметра нет). Кстати, именно этот параметр редактирует ISPmanager в свойствах сервера баз данных.

2. Кодировка соединения. Это кодировка, в которой клиент (скрипт пользователя, форум, mysql-клиент и т.д.) общается с MySQL. Когда клиент подсоединяется к серверу, тот ему сообщает значение параметра default-character-set. Таким образом, они договариваются о том, в какой кодировке они будут общаться. Кодировку общения можно изменить запросом (его лучше выполнять сразу после соединения с сервером):

Кстати, множество современных правильных скриптов именно это и делают.

Одна сложность: есть ряд кривых клиентов, которые всего этого не понимают и общаются в какой-то своей кодировке. Персонально для них можно написать в /etc/my.cnf, секцию [mysqld]:

Что это означает? Сразу после подсоединения любого клиента, MySQL выполнит запрос "set names utf8", как будто смену кодировки общения запросил сам клиент.

Это всё, что нужно знать для решения любой проблемы с кодировками в MySQL. Осталось несколько уточнений (самое интересное :)

phpMyAdmin, mysqldump - обычные клиенты, на них действуют те же самые правила. Одно "но": на все PHP-скрипты (включая phpMyAdmin) действует default-character-set из секции [client] в my.cnf. Для mysqldump есть отдельная секция [mysqldump]. ISPmanager прописывает default-character-set во все секции.

Дамп базы - это обычный набор MySQL-команд. Если вы в самое его начало напишете "set names cp1251;", то эта команда тоже выполнится и MySQL будет считать, что дальше все данные в дампе идут в кодировке cp1251.

Кодировки в MySQL-командах пишутся без кавычек и без "-" (дефисов). Популярные в России кодировки: utf8, cp866 (DOS), cp1251 (windows-1251), koi8r.

И, наконец, пара советов:

  • Если вы в этом новичок, постарайтесь свести всё к одной кодировке. Пусть у вас дамп и "default-character-set" (напомню, влияет на кодировку хранилища при создании таблиц и на кодировку общения с клиентом) будет в одной кодировке. Это избавит от путаницы и решит 90% проблем.
  • Если есть возможность - используйте консольную утилиту mysqldump. phpMyAdmin - это дополнительная прослойка, которая лишь добавляет свою путаницу и свои баги.

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

1. В файле /etc/my.cnf добавьте следующие строчки:

1.1. Под разделом [client]

1.2. Под разделом [mysqld]

После этого перезапустите базу MySQL или весь ваш виртуальный сервер (из ISPmanager или консоль).

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