Как сделать исполняемый файл для обновления mysql базы данных?

У меня есть сервер Ubuntu, который размещает мое веб-приложение.

Но из-за некоторых соображений безопасности это не видимо через Интернет. Клиент должен обновить базу данных и обновить некоторые значения в ней, но из-за тех же соображений безопасности мне не разрешают там больше, таким образом, они попросили, чтобы я создал исполняемый файл (как пакетные файлы в окнах), который обновит базу данных, вручит ее полномочиям и объяснит это им так, они могут обновить базу данных.

Скажите, что у меня есть база данных, названная myDb с пользователем, говорят, что myUser и myPassword, и я должен выполнить этот запрос:

UPDATE myDb.member SET member_creditDueDate='2025-09-21 12:00:00';

Как я могу сделать это?

3
задан 20 June 2014 в 14:18

2 ответа

Создание командного сценария

Если сценарий, который необходимо создать, должен только быть выполнен как есть людьми, имеющими доступ к серверу и если бы данные, которые будут помещены в DB, поставляются Вам (так ничто динамическое), необходимо было бы сделать сценарий удара как это:

#!/bin/bash

if [ "x$1" == "x" ]; then
   echo "Usage: $0 <SQL commands file>"
   exit 1
fi

if [ ! -f "$1" ]; then
   echo "The file specified in parameter ($1) does not exist or is not readable"
   exit 2
fi

USER=myUser
PASS=myPassword
DB=myDB
SERVER=ipMysql

mysql -u$USER -p$PASS -h$ipMysql $DB < $1    

Скопируйте все вышеупомянутое в одном тестовом файле, что можно назвать dataUpload.sh и затем сделать его исполняемым файлом: sudo chmod +x dataUpload.sh.

Что делает этот сценарий?

  1. Проверьте предоставление обязательного параметра: путь к текстовому файлу, содержащему команду SQL для обновления данные в DB (см. ниже),
  2. Проверьте, что файл, данный в параметре, доступен сценарием
  3. Установите некоторую переменную с учетными данными для соединения с DB (внимание, что это - быстрый подход, здесь не принимающий некоторый аспект безопасности во внимание: например, пароль будет видим в открытом тексте в сценарии и в списке процессов - ps -ef или ps auxwww когда сценарий будет работать. Можно искать более безопасный подход),
  4. Загрузите команды SQL файла SQL в DB с помощью командной строки mysql клиент.

Командный файл SQL

Этот командный файл SQL является просто текстовым файлом, содержащим всю команду SQL к INSERT или UPDATE данные, которые Вы сделали бы сами, если Вы могли бы получить доступ к серверу. Одна команда с методической точностью, как в этом примере:

UPDATE myDb.member SET member_creditDueDate='2025-09-21 12:00:00';
UPDATE myDb.member SET member_credutDueDate='2025-10-11 00:00:00';

и так далее.

Если Вы пишете файл, позволяет, говорят, названный 20140620_dbupdate.sql, то человек, у которого есть доступ к DB, должен будет просто выполниться dataUpload.sh 20140620_dbupdate.sql при приглашении командной строки.

Путем разделения оболочки и команд SQL, Вы можете:

  1. легко протестируйте логику, которая загружает данные в DB
  2. передайте только однажды исполняемый сценарий
  3. для более позднего обновления просто сфокусируйтесь на создании SQL, управляет файлом

Больше сделать

Это - первый быстрый подход, который решит Вашу проблему, чтобы быть исчерпывающим я должен был бы покрыть:

  • Обеспечение пароля
  • Использование транзакций SQL
  • Больше обнаружения ошибок и сообщающий в сценарии
6
ответ дан 1 December 2019 в 15:26

Вы попробовали сценарий оболочки за это, это - то же как сценарий пакетной обработки в окнах (но более мощный)

0
ответ дан 1 December 2019 в 15:26

Другие вопросы по тегам:

Похожие вопросы: