У меня есть сервер Ubuntu, который размещает мое веб-приложение.
Но из-за некоторых соображений безопасности это не видимо через Интернет. Клиент должен обновить базу данных и обновить некоторые значения в ней, но из-за тех же соображений безопасности мне не разрешают там больше, таким образом, они попросили, чтобы я создал исполняемый файл (как пакетные файлы в окнах), который обновит базу данных, вручит ее полномочиям и объяснит это им так, они могут обновить базу данных.
Скажите, что у меня есть база данных, названная myDb с пользователем, говорят, что myUser и myPassword, и я должен выполнить этот запрос:
UPDATE myDb.member SET member_creditDueDate='2025-09-21 12:00:00';
Как я могу сделать это?
Если сценарий, который необходимо создать, должен только быть выполнен как есть людьми, имеющими доступ к серверу и если бы данные, которые будут помещены в 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
.
Что делает этот сценарий?
ps -ef
или ps auxwww
когда сценарий будет работать. Можно искать более безопасный подход),mysql
клиент.Этот командный файл 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, Вы можете:
Это - первый быстрый подход, который решит Вашу проблему, чтобы быть исчерпывающим я должен был бы покрыть:
Вы попробовали сценарий оболочки за это, это - то же как сценарий пакетной обработки в окнах (но более мощный)