Задать вопрос
Ответы пользователя по тегу MySQL
  • Как через BD добавить символ сразу во все названия статей (при учете того, что все названия содержат одинаковое слово)?

    Примерно так на тестовой базе получилось
    use test;
    set @pos:=0;
    update test set title=replace(title, 'Объект', CONCAT('Объект №', @pos:=@pos+1)), modified=NOW() where title like '%Объект%' order by created desc;
    select * from test where title like '%Объект%' order by modified desc;
    Ответ написан
    Комментировать
  • Как организовать передачу данных на mysql сервер?

    Репликация наложит на Вас ограничения:
    - БД на сервере будет Read Only
    - Если вы что-то не так сделаете на локальной базе, то изменения улетят в удаленную, будете восстанавливать.
    - Может потребоваться дополнять эти таблицы, а удаление записей на мастере, повлечет удаление записей на реплике.

    1. Выгружайте каждую таблицу. Есть 2 способа, если у Вас есть права выгружать результаты запросов в файл и если их нет.
    Первый: https://mariadb.com/kb/en/library/select-into-outfile/
    SELECT * INTO OUTFILE '/path/to/file.txt'
      FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
      LINES TERMINATED BY '\n'
      FROM tablename
    WHERE ID > N;


    Второй способ выгрузить таблицу:
    mysql -h host -u user -p password -e "SELECT * FROM tablename WHERE ID > N;" > /path/to/file.txt


    2. Подключаетесь к серверу по ssh, или устанавливаете ssh туннель:
    ssh user@example.com -L 3306:127.0.0.1:3306 -N

    3. Загружаете каждую таблицу с помощью mysqlimport:
    mysqlimport -h host -u user -p password target_database /path/to/file.txt


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

    В целом вот такой вариант я использовал для накопления статистических таблиц с посещениями сайта на 1c-bitrix, в отдельной локальной БД, т.к. housekeeping записей был настроен на хостинге раз в 30 дней, а статистика для анализа требовалась более чем за полгода. Главное в этом методе - наличие ID поля, по которому можно идентифицировать позицию, а также договоренность о том, что ID остается неизменным.
    Ответ написан
    Комментировать
  • Как создать учетные записи MySQL из программы Python?

    Храните доступы как Вам удобно. Тот же битрикс хранит доступы к базе открыто в подключаемых файлах. Главное, чтобы на файлах и директориях стояли правильные права, которые не позволят обычным пользователям читать файлы с паролями. Только отдельный пользователь из под которого выполняется приложение и администратор могут его читать.

    Я не эксперт в вопросах безопасности, но концепция состоит в том, чтобы приложению были доступны минимально необходимые привилегии для его работы и не более (это касается и настроек привилегий для пользователя СУБД, никаких рутов и грант олл!)
    Ответ написан
    Комментировать
  • Как полностью отключить кэш у mysql?

    На тостере уже есть похожая тема:
    MySQL кеширует запросы даже при выключенном кешировании?

    возможно Вы столкнулись с кешированием ОС.
    В любом случае, использование mysql (в частности innodb движка) подразумевает соблюдение транзакционной целостности, записи данных, а также дополнительно сброса бин лога на диск, чтобы обеспечить надежное хранение записанных данных. Этот вариант немного не подходит по определению для работы с оперативными данными (потеря которых, в случае внезапного отключения, не столь критична)

    Взгляните в сторону memcached или redis. Возможно Вам придется пересмотреть Ваш код.
    Ответ написан