Windows зайти под root mysql
Обновлено: 03.07.2024
Если на экране появляется приветствие mysql, то всё прошло ok.
Для выхода из командной строки mysql можно написать exit, в linux достаточно нажать ctrl+C. Теперь можно писать любые mysql-запросы. Чтобы запрос выполнился, в конце обязательно нужно поставит точку с запятой ";". При написании длинных запросов удобно делать enter`ом переход на следующую строку. А после полного написание запроса поставить ";" и нажать "enter".
Для работы с конкретной базой данных нужно её выбрать с помощью оператора use. Показать все базы данных:
Результатом будет что то вроде этого:
Выбрать базу данных jeka:
Посмотреть названия всех таблиц в конкретной базе данных (после выполнения use):
Просмотреть структуру таблицы (имена и тип полей):
Достать информацию о юзере с >
Бэкап структуры таблицы, а точнее sql-запрос на её создание
Если в конце запроса поставить не ; а \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 в терминале реально повысили мою производительность.
Поисковые запросы , по которым приходили пользователи- Установить mysql 5.6 на travis Решено!
- Как переименовать таблицу в MySQL? Решено!
- Got a packet bigger than 'max_allowed_packet' bytes - ошибка mysql Решено!
- mysqldump только структуры таблиц 1 ответ
- MySQL ошибки Lost connection to MySQL server at 'waiting for initial communication packet' 1 ответ
- MySQL - изменение полей, структуры таблицы 0 комментариев
- Запросы инъекции для mysql 0 комментариев
- Доступ к mysql из-вне3 комментария
- Mysql перенос таблиц из одной базы данных в другую 0 комментариев
- Анализ производительности MySQL с использованием performance_schema 0 комментариев
Комментарии 2
Viktor, спасибо. Судя по скринам, штука интересная.
Правда, уж больно много зависимостей она имеет.. Как решу проблему с зависимостями, отпишусь.
Сервер mysqld может запускаться и работать от любого пользователя. Чтобы настроить mysqld для работы под Unix-пользователем user_name , необходимо выполнить следующие действия:
Если сервер работает, остановите его (используйте mysqladmin shutdown ).
Измените каталоги и файлы баз данных так, чтобы user_name имел привилегии для чтения и записи файлов в этих каталогах (возможно, это нужно будет делать из Unix-аккаунта root ):
Если среди каталогов или файлов в каталоге данных MySQL присутствуют символические ссылки, то нужно будет также перейти по этим ссылкам и изменить каталоги и файлы, на которые они указывают. chown -R может не отработать символических ссылок.
Запустите сервер из аккаунта user_name или, если у вас MySQL 3.22 и выше, запустите mysqld из Unix-аккаунта root и используйте опцию --user=user_name . mysqld переключится на выполнение в контексте Unix-пользователя user_name до того, как начнет обслуживать запросы на соединение.
Чтобы запускать сервер от имени данного пользователя автоматически в ходе загрузки системы, добавьте строку user, указывающую имя пользователя, в группе [mysqld] файла опций /etc/my.cnf или файла опций my.cnf из каталога данных сервера. Например:
К этому моменту процесс mysqld должен без помех работать под Unix-пользователем user_name . Однако содержимое таблиц привилегий не изменяется. По умолчанию (сразу после выполнения скрипта инсталляции таблиц привилегий mysql_install_db ) MySQL-пользователь root является единственным пользователем с правами на доступ к базе данных mysql , а также на создание и удаление баз данных. Если вы не меняли этих полномочий, они по-прежнему действительны. То, что вы вошли в систему как Unix-пользователь, отличный от root , не может вам помешать получить доступ к MySQL в качестве MySQL-пользователя root; просто задайте клиентской программе опцию -u root .
Отметим, что работа с MySQL в качестве MySQL-пользователя root посредством указания -u root в командной строке не имеет ничего общего с выполнением MySQL под Unix-пользователем root , или вообще под каким бы то ни было Unix-пользователем. Привилегии доступа и имена пользователей MySQL никак не связаны с именами Unix-пользователей. Единственная связь с именами Unix-пользователей заключается в том, что если при запуске клиентской программы не задана опция -u , то клиент попытается соединиться, используя в качестве имени MySQL-пользователя имя Unix-аккаунта.
Если Unix-сервер не слишком хорошо защищен или не нуждается в повышенных мерах безопасности, следует как минимум установить в таблицах привилегий пароль для MySQL- пользователя root. В противном случае любой пользователь с аккаунтом на данной машине сможет запустить mysql -u root db_name и делать в MySQL все, что ему заблагорассудится.
В современных реалиях сложно найти даже самое простое приложение, которое бы не требовало подключения базы данных – места для хранения электронной информации. Обычно для работы с такими хранилищами используется система управления базами данных. MySQL – самая распространенная и популярная СУБД в мире.
Давайте выясним, чем же она хороша и как с ней работать.
База данных MySQL: что это такое и в чем ее преимущества
MySQL – это реляционная система управления базами данных с открытым исходным кодом, написанная на языках программирования C и C++. Благодаря ей можно оптимизировать работу сайта или мобильного/десктопного приложения.
База данных – это место для структурированного хранения данных. Например, чтобы найти в смартфоне сохраненную картинку, мы используем для этого галерею. В данном случае картинки – это данные, а галерея – база данных.
Такой же подход используется и на многих сайтах, где подключены формы регистрации, системы оформления заказа и прочее. Когда вы регистрируетесь на сервисе, вся полученная от вас информация сохраняется в базе данных – благодаря этому вы можете повторно войти в свой аккаунт и получить доступ к внесенным ранее изменениям.
Если вести крупный ресурс без БД, то на это будет уходить очень много времени и средств. Базы данных группируют и упорядочивают информацию, упрощают получение доступа к ней. Чтобы администрировать такой большой поток данных, используются СУБД: MySQL, Microsoft SQL Server, PostgreSQL и другие.
MySQL хранит всю информацию в табличном виде. Извлечь данные из одной или нескольких таблиц можно с помощью запроса. Запросы в MySQL – это то, на чем все строится, с их помощью можно выполнять всевозможные операции с данным.
Столбцы таблицы всегда строго упорядочены, а расположение строк при необходимости может меняться в зависимости от информации в ячейках. Посмотрите на простую адресную книжку в виде таблицы:
Принцип работы с таблицами следующий: к серверу, на котором хранятся и обрабатываются структурированные данные, подключаются клиенты для получения необходимой информации, а для взаимодействия между пользователем и сервером используется специальное ПО. Заполнение подобных и более крупных таблиц происходит с помощью языка программирования SQL.
Исходя из пользовательского опыта, можно выделить следующие особенности MySQL:
- быстрая скорость доступа и обработки данных;
- надежная защита информации;
- простота использования;
- совместимость с Windows и Linux;
- бесплатность;
- возможность контролировать доступ к данным и учетным записям;
- шифрование паролей.
На этом с теоретической частью закончим.
Создание нового пользователя в MySQL
После установки MySQL в базе данных автоматически будет создан новый пользователь root. Работать под таким именем небезопасно, поэтому рекомендуется создавать нового пользователя и выполнять необходимые действия под ним. Давайте рассмотрим два способа создания нового пользователя в MySQL – через phpMyAdmin и через консоль.
Вариант 1: с помощью phpMyAdmin
Нам потребуется phpMyAdmin – приложение для работы с базой данных, которое обычно по умолчанию предустановлено на хостинге либо локальном сервере.
Чтобы добавить нового пользователя в phpMyAdmin, воспользуемся инструкцией:
Подробнее о правах доступа мы поговорим чуть позже, а пока давайте рассмотрим альтернативный метод добавления пользователя в БД.
Вариант 2: через консоль
Если вы подключаетесь к серверу по SSH, то этот способ для вас. Нам потребуется выполнить несколько команд:
Первым дело активируем сервер базы данных:
Создадим нового пользователя:
В кавычках потребуется изменить следующие данные: user – имя пользователя, pswrd – пароль.
Пока что пользователь не имеет разрешений, а значит, не может получить доступ к MySQL. Для решения такой проблемы пропишем еще одну строчку кода:
Мы выдали указанному пользователю все доступные права. Осталось сохранить внесенные изменения с помощью команды:
Готово! Теперь вы знаете, как создать нового пользователя в MySQL с правами доступа root.
Права доступа
В MySQL выделяют следующие права доступа:
- ALL PRIVILEGES – предоставляет полный доступ к выбранной БД;
- CREATE – разрешает пользователям создавать новые БД;
- SELECT – разрешает делать выборку данных;
- INSERT – позволяет вносить новые записи в таблицы;
- UPDATE – разрешает менять ранее созданные записи в таблицах;
- DELETE – разрешает удалять записи из таблиц;
- DROP – дает возможность удалять записи в БД;
- GRANT OPTION – позволяет пользователю предоставлять или отзывать права других пользователей.
Как изменить права доступа в MySQL
Чтобы предоставить те или иные права доступа, мы можем воспользоваться административной панелью или консолью.
Способ 1: через phpMyAdmin
Изменяем права доступа:
Таким образом, мы настроили права доступа для одного пользователя. Впоследствии вы сможете их изменить аналогичным способом.
Вариант 2: в терминале
В данном случае нам потребуется всего несколько команд. Если требуется изменить права доступа для выбранного пользователя MySQL, то необходимо выполнить следующее:
Значения внутри скобок необходимо заменить:
- наименование БД – указываем базу данных;
- наименование таблицы – указываем имена таблиц, к которым необходимо выдать доступ, прописываем .*, чтобы разрешить доступ ко всем таблицам;
- права — указываем тип прав, рассмотренный ранее;
- user – имя пользователя.
Если нужно указать несколько прав, то их необходимо прописать через запятую:
Если нужно удалить права у выбранного пользователя:
Забрать все права:
Полностью удалить пользователя можно командой:
Как посмотреть права доступа в MySQL
Для того чтобы посмотреть, какие права доступа выданы пользователю MySQL, достаточно в консоли прописать команду:
На этом моя статья подходит к концу. Надеюсь, что создать нового пользователя в MySQL для вас больше не проблема. Спасибо за внимание!
MYSQL был установлен давно. Теперь, поскольку мне нужно использовать MYSQL, но я забыл пароль, я поискал его в Интернете в час ночи. Большинство методов в Интернете - это добавление –skip-grant-tables в My.ini или My_default.ini Метод достижения пропустить пароль Mysql для подключения к базе данных и изменить пароль. Ни один из этих методов у меня не работает. Наконец, объединив два блога, я нашелнадежныйМетод записывается на тот случай, если вы забудете пароль позже.
Запомните исходный парольВ случае изменения нового пароля:
После входа в базу данных введите
как показано на картинке:
Измените пароль пользователя root @ localhost на admin:
Шаг 1. Отключите службу mysql.
- Откройте cmd от имени администратора, переключите каталог с диска C по умолчанию на каталог установки mysqld.exe, мой каталог установки по умолчанию: C: \ Program Files \ MySQL \ MySQL Server 8.0 \ bin
- cmd input команда: net stop mysql, обязательно закройте службу mysql
(Если здесь сообщается об ошибке, возможно, имя службы MySQL - не MySQL, а имя моей службы MySQL - MySQL80, поэтому я использую команду net stop mysql80 для завершения службы mysql)
Шаг 2. Пропустите проверку пароля Mysql
После закрытия службы Mysql продолжайте работу в каталоге C: \ Program Files \ MySQL \ MySQL Server 8.0 \ bin.
ввод
После ввода этой строки кода я успешно пропустил вход в систему с паролем Mysql
Шаг 3. Введите Mysql без пароля
Затем откройте cmd.exe, запущенный в режиме администратора, войдите в каталог bin в mysql, войдите в MySQL без пароля учетной записи, а затем сбросьте пароль пользователя root системы баз данных на admin.
- Введите следующую командную строку, чтобы войти в MySQL без пароля учетной записи.
- Сбросьте пароль, установите пароль для root @ localhost = «новый пароль»;
В качестве примера возьмем установку нового пароля admin, введите
Наконец-то вы закончили, успешно сбросили пароль!
Говорят, что лучший пароль — тот, который не надо запоминать. В случае с MySQL это реально благодаря плагину auth_socket и его версии для MariaDB — unix_socket.
Оба эти плагина — вовсе не новы, о них много говорилось в этом же блоге, например в статье о том, как изменять пароли в MySQL 5.7, используя плагин auth_socket. Однако, разбирая, что новенького в MariaDB 10.4, я обнаружил, что unix_socket теперь устанавливается по умолчанию и является одним из методов аутентификации ("одним из", потому как в MariaDB 10.4 одному пользователю для аутентификации доступно больше одного плагина, что и объяснятется в документе "Аутентификация" от MariaDB 10.04).
С пакетами Debian для MySQL, root пользователь аутентифицируется следующим образом:
То же и в случае с пакетом .deb для MariaDB:
Пакеты .deb из официального репозитория Percona также настраивают аутентификацию пользователя с root-правами под auth-socket и для Percona Server. Приведем пример с Percona Server for MySQL 8.0.16-7 и Ubuntu 16.04:
Так в чем же магия? Плагин проверяет, что пользователь Linux соответствует пользователю MySQL, используя сокет-опцию SO_PEERCRED — чтобы собрать информацию о пользователе, запускающем клиентскую программу. Таким образом, плагин можно использовать только на системах, поддерживающих опцию SO_PEERCRED, вроде той же Linux. Сокет-опция SO_PEERCRED позволяет узнавать uid связанного с сокетом процесса. А после он уже получает связанное с этим uid имя пользователя.
Приведем пример с пользователем "vagrant":
Поскольку в MySQL нет пользователя "vagrant", в доступе нам отказано. Создадим такого пользователя и повторим попытку:
Получилось!
Ну, а как насчет не-Debian дистрибутива, где это не предусмотрено по умолчанию? Попробуем Percona Server for MySQL 8, установленный на CentOS 7:
Облом. Чего же не хватило? Плагин не загружен:
Добавим в процесс плагин:
Теперь у нас есть все необходимое. Попробуем еще разок:
Теперь можно войти в систему под логином "percona".
И снова получилось!
Вопрос: получится ли войти в систему под тем же логином percona, но от другого ользователя?
Нет, не получится.
Вывод
MySQL достаточно гибкая в нескольких аспектах, один из которых — метод аутентификации. Как видно из этого поста, доступ можно получить без паролей, на основании пользователей ОС. Это может быть полезно при определенных сценариях, и один из них — когда мигрируете с RDS/Aurora на обычную MySQL, пользуясь аутентификацией базы данных IAM, чтобы по-прежнему получать доступ, но без паролей.
Читайте также: