Использование MySQL в качестве СУБД
DNSmanager по умолчанию использует в качестве СУБД (системы управления базами данных) SQLite. Эту СУБД удобно использовать при небольших объёмах данных и низких нагрузках, что характерно для DNSmanager. Однако, если в DNSmanager добавлено большое количество доменов и к нему поступает большое количество конкурентных запросов, рекомендуем использовать СУБД MySQL.
Алгоритм перехода с SQLite на MySQL
Алгоритм состоит из шагов:
Установите и запустите MySQL:
Для CentOS
yum install mariadb-server service mariadb start
BASH
Для Debian
apt-get install mysql-server service mysqld start
BASH
Измените стандартное имя файла core:
mv /usr/local/mgr5/bin/core /usr/local/mgr5/bin/core2
CODE
Остановите процесс core:
pkill core
CODE
Создайте в MySQL базу данных:
create database dnsmgr default character set utf8mb4;
BASH
Замените в конфигурационном файле DNSmanager (по умолчанию /usr/local/mgr5/etc/dnsmgr.
- Также в конфигурационном файле укажите параметры подключения к базе данных:
- DBHost — адрес сервера с MySQL, на котором находится база данных. По умолчанию — «localhost»;
- DBUser — пользователь базы данных. По умолчанию — «root»;
- DBPassword — пароль пользователя базы данных, заданного параметром DBUser;
- DBName — имя базы данных. По умолчанию — «dnsmgr».
- Если нужно, перенесите данные из SQLite в MySQL:
Создайте дамп базы данных:
sqlite3 /usr/local/mgr5/etc/dnsmgr.db .dump > /root/dnsmgr.db.sqlite
BASH
Пояснения
/root/dnsmgr.db.sqlite — файл, в который будет записан дамп.
Выполните замены в файле дампа:
replace "BEGIN TRANSACTION" "START TRANSACTION" -- /root/dnsmgr.db.sqlite replace "PRAGMA foreign_keys=OFF;" "SET NAMES utf8mb4;" -- /root/dnsmgr.db.sqlite replace "ON CONFLICT FAIL" "" -- /root/dnsmgr. db.sqlite replace "usage VARCHAR(64)" "\`usage\` VARCHAR(64)" -- /root/dnsmgr.db.sqlite replace "noauto VARCHAR(3)" "\`noauto\` VARCHAR(3)" -- /root/dnsmgr.db.sqlite replace "DEFAULT \`off\`" "DEFAULT 'off'" -- /root/dnsmgr.db.sqlite awk 'FS = "\"" {if($1=="INSERT INTO ") {print($1$2$3)} else {print}}' /root/dnsmgr.db.sqlite > /root/dnsmgr.db.mysql
BASH
Разверните базу данных для MySQL из дампа:
mysql -uroot -p dnsmgr < /root/dnsmgr.db.mysql
BASH
Пояснения
/root/dnsmgr.db.sqlite — файл дампа.
- Перезапустите DNSmanager. Если перенос данных из SQLite в MySQL не был выполнен, то DNSmanager запустится с чистой базой данных.
Верните файлу core стандартное имя:
mv /usr/local/mgr5/bin/core2 /usr/local/mgr5/bin/core
CODE
Перезапустите процесс core:
pkill core
CODE
Скрипт конвертации
Для выполнения пунктов 2–10 алгоритма можно воспользоваться скриптом:
#!/bin/bash mv /usr/local/mgr5/bin/core /usr/local/mgr5/bin/core2 pkill core sqlite3 /usr/local/mgr5/etc/dnsmgr. db .dump > /root/dnsmgr.db.sqlite replace "BEGIN TRANSACTION" "START TRANSACTION" -- /root/dnsmgr.db.sqlite replace "PRAGMA foreign_keys=OFF;" "SET NAMES utf8mb4;" -- /root/dnsmgr.db.sqlite replace "ON CONFLICT FAIL" "" -- /root/dnsmgr.db.sqlite replace "usage VARCHAR(64)" "\`usage\` VARCHAR(64)" -- /root/dnsmgr.db.sqlite replace "noauto VARCHAR(3)" "\`noauto\` VARCHAR(3)" -- /root/dnsmgr.db.sqlite replace "DEFAULT \`off\`" "DEFAULT 'off'" -- /root/dnsmgr.db.sqlite awk 'FS = "\"" {if($1=="INSERT INTO ") {print($1$2$3)} else {print}}' /root/dnsmgr.db.sqlite > /root/dnsmgr.db.mysql mysql -e "create database dnsmgr default character set utf8mb4;" mysql -uroot dnsmgr < /root/dnsmgr.db.mysql grep -qE "DBType sqlite" /usr/local/mgr5/etc/dnsmgr.conf && replace "DBType sqlite" "DBType mysql" -- /usr/local/mgr5/etc/dnsmgr.conf grep -qE "DBType mysql" /usr/local/mgr5/etc/dnsmgr.conf || echo "DBType mysql" >> /usr/local/mgr5/etc/dnsmgr.conf rm -f /usr/local/mgr5/var/.db.cache.* mv /usr/local/mgr5/bin/core2 /usr/local/mgr5/bin/core pkill core
BASH
Сравнение MySQL и PostgreSQL в 2023 году / Хабр
PostgreSQL и MySQL — это надежные, безопасные и масштабируемые базы данных, которые существуют уже много лет. Каждая из них имеет уникальные сильные и слабые стороны, что делает какую‑либо из них более подходящей для конкретных нужд. В этой статье мы проведем их сравнение, чтобы помочь с принятием обоснованного решения в 2023 году.
Что касается выбора реляционной системы управления базами данных (РСУБД), то популярны два варианта — PostgreSQL и MySQL. Обе системы существуют уже несколько десятилетий и зарекомендовали себя как надежные, безопасные и масштабируемые. Однако они имеют различные сильные и слабые стороны, что делает одну из них более подходящей для конкретных случаев использования. В этой статье мы сравним PostgreSQL и MySQL, чтобы помочь вам принять обоснованное решение в 2023 году.
История и развитие
PostgreSQL была впервые выпущена в 1996 году и стала широко используемой СУБД с открытым исходным кодом. Она известна своей строгой приверженностью стандартам SQL, широким набором функциональных возможностей, а также вниманием к целостности и безопасности данных.
MySQL, с другой стороны, была впервые выпущена в 1995 году и широко применялась для веб‑приложений благодаря своей высокой производительности и простоте использования. Со временем компания Oracle приобрела систему управления базами данных MySQL с открытым исходным кодом и превратила ее в коммерческий продукт.
Функциональные возможности
PostgreSQL и MySQL предлагают широкий спектр возможностей в качестве систем управления реляционными базами данных, но между ними есть некоторые ключевые различия:
Типы данных: PostgreSQL поддерживает более широкий спектр современных типов данных, включая массивы, hstore (хранилище типа “ключ-значение”) и JSONB (бинарный JSON), которые обеспечивают более гибкие и эффективные возможности хранения данных. С другой стороны, MySQL имеет ограниченный набор типов данных и ориентирован на более простые веб-приложения.
Поддержка геопространственных данных: PostgreSQL поддерживает геопространственные данные, включая богатый набор типов данных, функций и операторов для работы с географическими данными. MySQL, хотя и имеет некоторую поддержку геопространственных данных, мог бы обладать большей функциональной мощью в этой области.
Индексирование: В MySQL по умолчанию используется тип индекса B-tree, который хорошо подходит для большинства юзкейсов. PostgreSQL имеет более совершенную систему индексирования, чем MySQL, включая поддержку индексов B-tree, GiST (Generalized Search Tree. Обобщенное поисковое дерево) и GIN (Generalized Inverted Index. Обобщенный обратный индекс). Они предоставляют больше возможностей для оптимизации производительности запросов и поиска данных.
Репликация: PostgreSQL и MySQL поддерживают репликацию баз данных, но методы и возможности репликации различны. PostgreSQL поддерживает мульти-мастер (с несколькими мастерами) репликацию, в то время как MySQL в основном поддерживает репликацию master-slave (ведущий-ведомый). Недавно MySQL представила новую модель репликации под названием Group Replication (групповая репликация), но это все еще относительно новая фича с некоторыми ограничениями.
Транзакции: PostgreSQL и MySQL InnoDB используют MVCC (Multi-Version Concurrency Control. Многоверсионный контроль параллелизма) для обработки параллельного доступа к данным. Однако PostgreSQL предлагает развитые возможности управления транзакциями, такие как уровни изолированности транзакций, атомарные транзакции и точки сохранения. В отличие от этого, опции по управлению транзакциями в MySQL более ограничены. PostgreSQL может быть лучше для применения в приложениях, требующих высокого параллелизма или сложной логики транзакций.
Хранимые процедуры: PostgreSQL и MySQL поддерживают хранимые процедуры, но язык и функциональность хранимых процедур различны. PostgreSQL поддерживает хранимые процедуры, написанные на различных языках, включая PL/pgSQL, PL/Tcl, PL/Perl и другие. MySQL, напротив, в основном поддерживает хранимые процедуры, написанные на языке SQL.
Расширения: PostgreSQL имеет надежную платформу расширений, которая позволяет разработчикам добавлять пользовательские функции и расширять основные возможности базы данных. Хотя MySQL имеет некоторую поддержку расширений, уровень расширяемости у нее иной, чем у PostgreSQL.
Захват измененных данных
С точки зрения захвата измененных данных (CDC), как бинарные логи MySQL, так и журналы предзаписи (WAL) PostgreSQL могут фиксировать изменения, внесенные в базу данных. Однако конкретные возможности и использование CDC могут отличаться.
DBConvert Streams — это программное обеспечение, которое может читать журналы транзакций MySQL и PostgreSQL и преобразовывать записи в другой диалект, что делает его пригодным для репликации гетерогенных баз данных в режиме реального времени.
Производительность
MySQL известна своей высокой производительностью и способностью обрабатывать большие объемы данных. Она была оптимизирована для рабочих нагрузок с интенсивными операциями чтения данных и имеет быструю систему индексирования, которая помогает улучшить производительность запросов. Однако при выполнении операций записи могут возникать проблемы параллелизма, такие как блокировки, что приводит к снижению производительности. Это связано с реализацией блокировок на уровне таблиц, препятствующих любым действиям во время выполнения операции записи.
Для решения проблемы блокировок на уровне таблиц используется механизм хранения InnoDB. Это один из самых популярных и широко используемых механизмов хранения данных в экосистеме MySQL. InnoDB поддерживает блокировку на уровне строки, улучшая параллелизм для смешанных рабочих нагрузок.
Кроме того, недавняя разработка высокопроизводительного механизма хранения данных MyRocks еще больше улучшила способность MySQL справляться с интенсивными рабочими нагрузками, связанными с записью.
PostgreSQL разработана в качестве более универсальной системы, способной справляться как с рабочими нагрузками при интенсивных операциях чтения, так и при интенсивной записи, но с немного меньшей производительностью, чем MySQL, которая оптимизирована для больших нагрузок во время чтения. Однако в последних версиях PostgreSQL улучшила свою производительность, особенно в отношении сложных запросов и обработки данных.
Кроме того, PostgreSQL имеет более развитую систему индексирования по сравнению с MySQL, что может повысить производительность при выполнении сложных запросов. PostgreSQL также поддерживает расширенные типы данных, такие как массивы и JSONB, что может привести к более эффективному хранению и получению данных.
В конечном итоге, производительность PostgreSQL и MySQL зависит от различных факторов, таких как аппаратное обеспечение, объем данных и сложность запросов.
При выборе между этими двумя системами учитывайте специфические требования вашего приложения и проводите тестирование производительности с вашими данными и рабочими нагрузками, чтобы определить наилучший вариант.
Масштабируемость
И MySQL, и PostgreSQL могут масштабироваться, однако в этом вопросе у них имеются свои сильные и слабые стороны.
MySQL часто предпочитают за ее горизонтальную масштабируемость, это означает, что ее можно масштабировать путем добавления новых узлов в кластер базы данных. Она идеально подходит для веб-приложений, которым необходимо обрабатывать большое количество одновременных соединений.
С другой стороны, PostgreSQL известна своей вертикальной масштабируемостью, то есть она может обрабатывать большие объемы данных и манипулировать вычислительными мощностями путем добавления дополнительных ресурсов, таких как память и процессор, на один узел. Она также поддерживает горизонтальное масштабирование с помощью таких технологий, как шардинг, которая позволяет разделять большие массивы данных на несколько узлов. PostgreSQL предпочтительна для приложений, требующих сложных запросов и транзакций, а также для рабочих задач в области хранения данных и бизнес-аналитики.
Что касается масштабируемости, учитывайте конкретные требования вашего приложения. Если вам необходимо обрабатывать большое количество параллельных соединений и требуется горизонтальная масштабируемость, MySQL может быть лучшим выбором. Однако PostgreSQL больше подходит, когда нужны сложные транзакции и запросы.
Стоимость
В 2023 году PostgreSQL по-прежнему является продуктом с открытым исходным кодом и ориентированной на сообщество, в то время как MySQL имеет более сложную историю лицензирования. MySQL изначально разрабатывалась как коммерческий продукт компанией MySQL AB, причем были доступны бесплатные и платные версии. Покупка MySQL AB компанией Oracle в 2010 году вызвала некоторые опасения среди разработчиков по поводу будущего статуса MySQL с открытым исходным кодом. Однако несколько форков оригинального MySQL с открытым исходным кодом, включая MariaDB и Percona, сняли эти опасения.
Когда использовать MySQL?
Хотя PostgreSQL имеет множество передовых фич и часто считается более продвинутой и сложной системой управления базами данных, чем MySQL, у нее есть свои недостатки.
К общим недостаткам PostgreSQL можно отнести следующие:
Несмотря на свои продвинутые функции и возможности, PostgreSQL еще не достигла того же уровня популярности и широкого использования, что и MySQL. Это привело к меньшему количеству сторонних инструментов, опытных разработчиков и администраторов баз данных в экосистеме PostgreSQL.
Из-за своих расширенных возможностей PostgreSQL может быть сложнее в настройке и управлении, чем MySQL, поэтому она больше подходит для опытных администраторов баз данных и разработчиков.
В некоторых случаях PostgreSQL работает медленнее, чем MySQL, из-за более сложной архитектуры и функций.
PostgreSQL потребляет больше ресурсов, чем MySQL, особенно в плане использования памяти и процессора.
Хотя PostgreSQL поставляется с открытым исходным кодом, стоимость внедрения и обслуживания может быть высокой из-за ее расширенных возможностей и повышенных требований к ресурсам.
PostgreSQL заново запускает еще один процесс для каждого нового клиентского подключения, что приводит к выделению значительного объема памяти, обычно около 10 МБ на соединение. Однако такая архитектура разработана для обеспечения повышенной безопасности и изоляции между различными клиентами и, как правило, считается компромиссом ради повышения производительности, надежности и масштабируемости.
PostgreSQL разработана с учетом приоритетов расширяемости, соответствия стандартам, масштабируемости и целостности данных. Иногда данные фичи могут снижать производительность по сравнению с MySQL, особенно в обычных рабочих нагрузках, связанных с интенсивными операциями чтения. Однако важно отметить, что точное значение разницы в производительности зависит от ряда факторов, таких как размер данных, сложность запросов и используемое оборудование.
Какая миграция более распространена: MySQL на PostgreSQL или PostgreSQL на MySQL?
Частота миграции между MySQL и PostgreSQL различна и зависит от потребностей и требований отдельных организаций. Некоторые организации могут мигрировать с MySQL на PostgreSQL, чтобы воспользоваться ее расширенными возможностями, лучшим соответствием требованиям SQL и совместимостью с открытым исходным кодом. PostgreSQL также более распространена в определенных отраслях, таких как финансовые услуги, государственное управление и хранение данных, где производительность, масштабируемость и безопасность являются важными факторами.
С другой стороны, другие компании могут перейти с PostgreSQL на MySQL из-за ее простоты, широкой поддержки сообщества и более низкой стоимости внедрения.
Согласно различным показателям, миграционный тренд направлен в сторону перехода с MySQL на PostgreSQL. Эти показатели говорят о том, что больше людей переходят с MySQL на PostgreSQL, чем наоборот.
Доступность инструментов миграции: Существует множество бесплатных и коммерческих инструментов миграции, помогающих перенести данные с MySQL на PostgreSQL. При этом инструментов для переноса данных с PostgreSQL на MySQL гораздо меньше.
Онлайн-ресурсы: Существует больше онлайн-учебников и ресурсов по миграции с MySQL на PostgreSQL, чем наоборот.
Рост сообщества: Сообщество PostgreSQL растет быстрее, чем сообщество MySQL, что указывает на повышающийся интерес к использованию PostgreSQL по сравнению с MySQL.
Вложения в открытый исходный код: Увеличивающееся количество вкладов в PostgreSQL с открытым исходным кодом указывает на то, что все больше людей инвестируют время и ресурсы в эту технологию и находят ее полезной для своих нужд.
Внедрение на предприятиях: Некоторые из крупнейших в мире и наиболее требовательных к данным организаций, такие как Cisco, Fujitsu и Федеральная авиационная администрация США (FAA), публично заявили, что перешли с MySQL на PostgreSQL.
Опросы пользователей: Отраслевые аналитики и эксперты по базам данных провели опросы, которые показывают, что все больше людей обдумывают возможность или планируют перейти с MySQL на PostgreSQL.
Эти факты свидетельствуют лишь о том, что с MySQL на PostgreSQL переходят чаще, чем наоборот, и это может быть верно лишь в некоторых случаях.
Заключение
PostgreSQL и MySQL — надежные реляционные системы управления базами данных с уникальными возможностями и ограничениями. Решение об использовании какой‑либо из них должно основываться на конкретных требованиях проекта, таких как характер и объем данных, сложность запросов, а также потребности в производительности и масштабируемости. Поскольку и PostgreSQL, и MySQL в 2023 году ожидает дальнейшее развитие, очень важно быть в курсе их последних разработок.
Кроме того, стоит упомянуть, что такие инструменты, как DBConvert Studio, могут помочь при миграции данных между MySQL и PostgreSQL в любом направлении. Эти инструменты позволяют упростить процесс передачи данных из одной базы данных в другую, что может быть особенно полезно, если вы рассматриваете возможность перехода с одной системы на другую.
Перевод статьи подготовлен в преддверии старта курса «PostgreSQL для администраторов баз данных и разработчиков». По ссылке ниже вы сможете посмотреть запись бесплатного урока, а также узнать о курсе подробнее.
Подробнее о курсе
sql — Журнал недопустимых запросов MySQL
спросил
Изменено 4 года, 5 месяцев назад
Просмотрено 42к раз
Я НЕ ВЫПОЛНЯЮ КОМАНДЫ ИЗ PHP!
Значение log_error MySQL установлено в /var/log/mysql/error. log
Однако, когда я подключаюсь к базе данных и запускаю команду SQL, ошибка не появляется в журнале.
ВЫБИРАТЬ * ОТ некоторой_таблицы где this_is_invalid_and_will_fail="Не имеет значения, потому что столбца не существует!";
Есть команды, запущенные из какого-то приложения Windows. Все, что я хочу знать, это то, какие недопустимые команды отправляются на сервер MySQL, чтобы я мог попытаться их разрешить.
- sql
- mysql
- просмотр
- ведение журнала
Журнал ошибок не делает этого: https://dev.mysql.com/doc/refman/8.0/en/error-log.html
Журнал ошибок содержит информацию указывая, когда mysqld был запущен и остановлено, а также любые критические ошибки которые происходят, когда сервер бег.
MySQL нигде не регистрирует недействительные/неудачные запросы.
Если это для целей отладки, вы можете попробовать настроить прокси-сервер MySQL, который мог бы регистрировать это, я думаю:
http://dev. mysql.com/downloads/mysql-proxy/
4В принципе, есть 2 способа.
1) настроить какой-нибудь прокси, который может логировать запросы об ошибках. Существует множество форков оригинального прокси-сервера mysql (о котором упоминал @Mchl) — https://github.com/search?utf8=%E2%9C%93&q=MySQL+Proxy. Также вы можете найти последнюю версию оригинальный прокси-сервер mysql здесь https://github.com/mysql/mysql-proxy
Мне не нравится этот способ, потому что он слишком сложен для быстрой отладки
2) вы можете включить общий журнал в mysql (который будет регистрировать ВСЕ запросы). Это создаст большие накладные расходы и не соответствует производственным требованиям, но это быстрый и простой способ исправить ошибки в среде разработки.
Просто войдите в свой mysql и выполните УСТАНОВИТЬ ГЛОБАЛЬНЫЙ general_log = 'ВКЛ';
ПОКАЗАТЬ ГЛОБАЛЬНЫЕ ПЕРЕМЕННЫЕ, КАК 'general_log%';
Вы увидите расположение журналов, например
После этого выполнить mysqladmin сброс-журналы -u root -p
Когда вам нужно будет остановить логи — просто выполните УСТАНОВИТЬ ГЛОБАЛЬНЫЙ general_log = 'ВЫКЛ';
Начиная с версии mysql 5.6.3 (выпущенной 3 октября 2011 г.) существует переменная с именем
, которая позволяет включать недопустимые запросы в общий журнал запросов:
https://dev.mysql .com/doc/refman/5.6/en/server-options.html#option_mysqld_log-raw
Вам необходимо включить общий журнал запросов, используя общий журнал
и общий файл журнала
, например:
[mysqld] общий журнал = 1 лог-сырье = 1 общий файл журнала =/var/log/mysql/general.log3
Не могли бы вы включить общий журнал запросов? Это должно сказать вам все, что вам нужно знать.
9Это не так уж и тривиально.
Зарегистрируйтесь или войдите в систему
Зарегистрируйтесь с помощью Google Зарегистрироваться через Facebook Зарегистрируйтесь, используя адрес электронной почты и парольОпубликовать как гость
Электронная почтаТребуется, но не отображается
Опубликовать как гость
Электронная почтаТребуется, но не отображается
Нажимая «Опубликовать свой ответ», вы соглашаетесь с нашими условиями обслуживания и подтверждаете, что прочитали и поняли нашу политику конфиденциальности и кодекс поведения.
разрешений — Можете ли вы «су-» в MySQL?
спросил
Изменено 3 года, 6 месяцев назад
Просмотрено 3к раз
Если у меня есть права root в базе данных mysql и я хочу отказаться от привилегий обычного пользователя, не используя его пароль, могу ли я это сделать? если да то как? думаю #su - имя пользователя
в unix. По сути, я просто хочу, чтобы их пароль не был им, поэтому я могу проверить их привилегии у их пользователя. В postgres я мог бы просто разрешить аутентификацию ident для пользователя root системы, чтобы обойти аутентификацию по паролю. Причина, по которой мне это нужно, заключается в том, чтобы иметь возможность воспроизвести проблему пользователей, будучи ими, а не быть ими, не позволит точно воспроизвести. Я могу, конечно, попросить их пароль, но это займет больше времени, чем его обход.
- MySQL
- разрешения
Я только что понял — если вы не против заблокировать пользователя во время входа в систему —
- сделайте резервную копию таблицы mysql.user (ну, по крайней мере, хешированного пароля пользователя)
- установите их пароль на то, что вы знаете:
ОБНОВЛЕНИЕ mysql.user SET password=PASSWORD('новый пароль') WHERE user='username' AND host='hostname';
- войдите как они
- вернули их пароль к тому, что было:
ОБНОВЛЕНИЕ mysql.user SET password='сохраненный хэш пароля' WHERE user='username' AND host='hostname';
… вам может понадобиться сброс привилегий ;
после манипулирования таблицей mysql.user.
Можно эмулировать пользователя, начиная с MySQL 5.5.7, с введением прокси-пользователей. Я никогда не делал этого раньше, поэтому я попробовал это с помощью тестового плагина аутентификации, так как кажется, что прокси-пользователи работают только с включенными плагинами аутентификации. Вот шаги, которые я предпринял.
Первые шаги от имени пользователя root:
mysql> УСТАНОВИТЬ ПЛАГИН test_plugin_server SONAME 'auth_test_plugin.so';
mysql> ПОКАЗАТЬ ПЛАГИНЫ;
Создать пользователя для эмуляции (в вашем случае он уже существует):
mysql> ПРЕДОСТАВИТЬ ВСЕ ПРИВИЛЕГИИ НА
dtest@
localhostОПРЕДЕЛЕН 'mypass';
Создать пользователя «прокси»:
mysql> СОЗДАЙТЕ ПОЛЬЗОВАТЕЛЯ proxy@localhost, ИДЕНТИФИЦИРОВАННОГО С помощью test_plugin_server AS 'dtest';
mysql> ПРЕДОСТАВИТЬ ПРОКСИ НА dtest@localhost TO proxy@localhost;
mysql> FLUSH PRIVILEGES;
Теперь попробуйте войти в систему, используя пользователя: proxy
, пароль: dtest
(переменная «AS» пользователя прокси):
В настоящее время MySQL не имеет пароля root и вместо этого использует плагин auth_socket
чтобы убедиться, что пользователь, подключившийся к сокету, является корневым пользователем системы. Вы можете использовать этот же метод для решения своей проблемы, если у вас все в порядке с учетными записями unix для всех ваших пользователей, что открывает всевозможные возможности, например. простое хранение двоичных файлов!
Сначала вы должны добавить учетную запись unix для пользователя:
root: adduser testuser
Затем добавить соответствующего пользователя MySQL (может быть выполнено автоматически в сценарии adduser.local
):
CREATE USER ' testuser'@'localhost' ИДЕНТИФИЦИРОВАН С auth_socket;
Теперь переключитесь на пользователя (пароль не требуется, если вы делаете это как root):
root: su testuser
Подключитесь к MySQL как пользователь (пароль не требуется, поскольку вы вошли в систему как этот пользователь):
testuser: mysql -u $USER
(или -you testuser вместо использования переменной окружения)
Лучше указать пользовательский параметр -u
, потому что процедура автоматического удобства пользователя клиента mysql не очень хороша в вычислении это само по себе, например. если вы переходите от пользователя к учетной записи пользователя, по какой-то причине он использует первого пользователя.
Я не знаю конкретного способа воспроизвести эквивалент su
, однако вам не нужен их пароль — из-за того, как mysql обрабатывает аутентификацию, вы можете установить другой пароль (или не использовать его в all) с каждой машины, с которой выполнен вход.
Зарегистрируйтесь или войдите в систему
Зарегистрируйтесь с помощью Google Зарегистрироваться через Facebook Зарегистрируйтесь, используя адрес электронной почты и парольОпубликовать как гость
Электронная почтаТребуется, но не отображается
Опубликовать как гость
Электронная почтаТребуется, но не отображается
Нажимая «Опубликовать свой ответ», вы соглашаетесь с нашими условиями обслуживания и подтверждаете, что прочитали и поняли нашу политику конфиденциальности и кодекс поведения.