Если вы случайно сломали или удалили MySQL в составе VestaCP на Ubuntu

👁 47 просмотров
1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...

Восстановление MySQL в Vesta CP

Если проблема возникла по неосторожности, то попробуйте так:

apt-get --purge remove mysql-common
apt-get install mysql-server

 

Удаление и замена MySQL на MariaDB

в Vesta CP

Если MySQL не хочет, то можно пробовать использовать MariaDB. Базы данных при этом сохраняются и автоматически импортируются

sudo apt-get remove --purge mysql-server mysql-client mysql-common
sudo apt-get autoremove
sudo apt-get autoclean
sudo apt-get install mariadb-server

 

Восстановление сайтов из Backup-ов

Это крайни и долгий процесс, особенно, если у вас на одном серваке много сайтов

Пулл соединений MySQL/Node.js

👁 112 просмотров
1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...

Ниже код, который организует это при помощи пулла соединений, который гораздо легче настраивать без непредвиденных ошибок:

var mysql = require('mysql');

var dbConfig = {
    host: "myhost",
    user: "user",
    password: "password",
    database: "dbname",
    port:3306
};

var user = require('./routes/user');
app.use('/user', user);
app.post('/user', function(req, res) {
    res.set({
        'Access-Control-Allow-Origin': '*',
        'Access-Control-Allow-Methods': 'GET, POST, OPTIONS, PUT, PATCH, DELETE',
        'Access-Control-Allow-Headers': 'X-Requested-With',
        'Access-Control-Allow-Credentials': 'true'
    });
    var data = req.body;
    var mysqlPool  = mysql.createPool(dbConfig);
    if(data.key=="ENTER_CUSTOMER")
    {
        mysqlPool.getConnection(function(err, connection) {
            if(err) throw err;
            connection.query("SELECT * FROM user where email LIKE '"+data.userName+"'", function(err, result, fields) {
                if(err) {
                    connection.release();
                    console.error(err);                   
                    return;
                }
                res.json({"key":data.key,"result":result});
                connection.release();
            });
        }); 
    }
});

 

Организация CRUD в Node.js и MySQL

👁 360 просмотров
1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...

Предисловие

CRUD (сокр. от англ. create, read, update, delete — «создать, прочесть, обновить, удалить») — акроним, обозначающий четыре базовые функции, используемые при работе с персистентными хранилищами данных:

  • C — создание;
  • R — чтение;
  • U — редактирование;
  • D — удаление.

Термин стал популярным благодаря книге Джеймса Мартина (англ. James Martin) «Managing the Data-base Environment», выпущенной в 1983 году

Речь в данной статье пойдет об использовании модуля mysql для работы с БД MySQL. Проект находится в репозитории GitHub. Сначала нам необходимо ее установить через команду:

npm install mysql

Данный модуль полностью под лицензией MIT и являются полноценным драйвером MySQL для Node.js, написанный на JavaScript и не требует дополнительной компиляции.

Соединение и простой пример

Для начала необходимо соединиться с БД, подключив данный модуль к скрипту. Для этого пишем:

var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'me',
  password : 'secret',
  database : 'my_db'
});

connection.connect();

Теперь можно выполнять любой запрос к БД со стороны сервера Node.js. Например, такой:

connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
  if (error) throw error;
  console.log('The solution is: ', results[0].solution);
});

connection.end();

 

Некоторые особенности при работе с данным модулем

Каждая сессия обращения к БД через запросы должна начинаться с создания соединения

var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'me',
  password : 'secret',
  database : 'my_db'
});

connection.connect();

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

connect.query("SELECT * FROM media where code LIKE '"+data.mediaCode+"'", function (err, result, fields) {
    if (err) {throw err;}
    res.json({"flag":"isindb", "result":result});
    connect.end();
});

Как организовать процесс обработки и выдачи запросов — это тема отдельной статьи.

 

CREATE — создание записи

Ниже представлен типичный простой код создания нового поля в таблице БД MySQL средствами Node.js:

//Делаем авторизацию
connect = mysql.createConnection({
    host: "hostname",
    user: "user",
    password: "password",
    database: "dbname"
});
//Создание нового соединения
connect.connect(function(err) {
    if (err) {throw err;}
});
//Добавляем новое поле
var post = {"colName1":"val1", "colName2":"val2", "colName3":"val3"};
connect.query('INSERT INTO tableName SET ?', post, function (err, result) {
    if (err) throw err;
    
    var data = {"flag":"myFlag","result":result};
    //******Уведомляем клиента о добавлении до закрытия*********
    //res.json(data);
    //******Уведомляем клиента о добавлении до закрытия*********
    connect.end();
});

READ — чтение полей

Ниже представлен типичный простой код чтения поля из таблицы БД MySQL средствами Node.js:

//Делаем авторизацию
connect = mysql.createConnection({
    host: "hostname",
    user: "user",
    password: "password",
    database: "dbname"
});
//Создание нового соединения
connect.connect(function(err) {
    if (err) {throw err;}
});
//Читаем поле(я)
connect.query("SELECT * FROM tableName where colName1 LIKE 'keyValue'", function (err, result, fields) {
    if (err) {throw err;}
    //******Уведомляем клиента о добавлении до закрытия*********
    //res.json({"flag":"myFlag", "result":result});
    //******Уведомляем клиента о добавлении до закрытия*********
    connect.end();
});

UPDATE- обновление/редактирование полей

Ниже представлен типичный простой код обновления/редактирования значения поля из таблицы БД MySQL средствами Node.js:

//Делаем авторизацию
connect = mysql.createConnection({
    host: "hostname",
    user: "user",
    password: "password",
    database: "dbname"
});
//Создание нового соединения
connect.connect(function(err) {
    if (err) {throw err;}
});
//Обновляем/редактируем поле(я)
connect.query("UPDATE tableName SET colName1 = 'val1' WHERE colName2 LIKE 'keyValue'", function (err, result) {
    if (err) {throw err};
    //********Уведомляем клиента об удачной операции обновления/редактирования
    //res.json({"flag":"myFlag", "result":result});
    //********Уведомляем клиента об удачной операции обновления/редактирования
    connect.end();
});

DELETE — удаление полей

Ниже представлен типичный простой код удаления строки из таблицы БД MySQL средствами Node.js:

//Делаем авторизацию
connect = mysql.createConnection({
    host: "hostname",
    user: "user",
    password: "password",
    database: "dbname"
});
//Создание нового соединения
connect.connect(function(err) {
    if (err) {throw err;}
});
//Удаляем поле(я)
connect.query("DELETE FROM tableName WHERE colName1 LIKE 'keyValue'", function (err, result) {
    if (err) {throw err;}
    //**************Уведомляем клиента об удачном удалении
    //res.json({"flag":"myFlag", "result":result});
    //**************Уведомляем клиента об удачном удалении
    connect.end();
});

 

Пулл соединений в MySQL/Node.js

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

var mysql = require('mysql');
var dbConfig = {
    host: "myhost",
    user: "user",
    password: "password",
    database: "dbname",
    port:3306
};
var mysqlPool  = mysql.createPool(dbConfig);
mysqlPool.getConnection(function(err, connection) {
    if(err) throw err;
    connection.query("SELECT * FROM user where email LIKE 'myUserName'", function(err, result, fields) {
        if(err) {
            connection.release();
            console.error(err);                   
            return;
        }
        res.json({"key":data.key,"result":result});
        connection.release();
    });
});

Соединение к БД Joomla из внешнего файла

👁 73 просмотров
1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...

Есть ситуация, когда нужно прочесть из БД Joomla из таблицы какого-то модуля данные, при этом есть необходимость прочесть данные в отдельный файл из которого они загружаются в интерфейс через Ajax запрос посредством JavaScript/jQuery. Ниже приведен код серверной и клиентской части для реализации данного взимодействия.

<?php
define( '_JEXEC', 1); //  This will allow to access file outside of joomla.
//defined( '_JEXEC')  or die( 'Restricted access' );// Use this if you wanna access file only in Joomla.
define( 'DS', DIRECTORY_SEPARATOR );
define('JPATH_BASE', $_SERVER['DOCUMENT_ROOT'] . DS . '');
require_once ( JPATH_BASE .DS.'includes'.DS.'defines.php' );
require_once ( JPATH_BASE .DS.'includes'.DS.'framework.php' );
//create application
$mainframe = &JFactory::getApplication('site');

function getField($file_alias){
    // Get a db connection.
    $db = JFactory::getDbo();
    // Create a new query object.
    $query = $db->getQuery(true);
    // Select all records from the user profile table where key begins with "custom.".
    // Order it by the ordering field.
    $query->select($db->quoteName(array('file_id', 'file_title', 'file_alias', 'url_download')));
    $query->from($db->quoteName('#__jdownloads_files'));
    $query->where($db->quoteName('file_alias') . ' LIKE '. $db->quote($file_alias));
    //$query->order('ordering ASC');
    // Reset the query using our newly populated query object.
    $db->setQuery($query);
    // Load the results as a list of stdClass objects (see later for more options on retrieving data).
    $results = $db->loadObjectList();
    return  $results[0];//Данные потом получить в виде свойств объекта ClassName::getFieldDocument($fileName, $userId)->fieldName
}

$arrData = array(
                    "file_alias"=>$_REQUEST['file_alias'], 
                    "url_download"=>getField($_REQUEST['file_alias'])->url_download,
                    "file_id"=>getField($_REQUEST['file_id'])->url_download,
                    "file_title"=>getField($_REQUEST['file_id'])->file_title
                );
echo json_encode($arrData);<span id="mce_marker" data-mce-type="bookmark" data-mce-fragment="1">​</span>
    function readPrices(data){
        var jsonString = $.ajax({
            url: "server.php", 
            data:data,
            dataType:'JSON', 
            async: false,  
            success: function(data){}
         }).responseText;
        return JSON.parse(jsonString);
    };
    //
    var url = "my-url-data";
    var jsonData = readPrices({"file_alias":url});
    console.log(jsonData);

 

Исправление предупреждений и ошибок при работе с MySQL через phpMyAdmin

👁 386 просмотров
1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 5,00 из 5)
Загрузка...

Примечание. Есть несколько причин, почему могут выскакивать подобного рода ошибки, если метод, описанный тут не помог, то следует поразмыслить над тем, что у нас установлен phpMyAdmin, который не предназначен для PHP 7 и следует ее удалить и переустановить для текущей версии языка PHP 7 или выше.

Часто бывает, что после установки на тот или иной сервер новой версии или при переходе на новую версию(к примеру, как у меня при переходе к php 7) phpMyAdmin начинает в панели выводить массу ошибка такого плана:

Deprecation Notice in ./../php/php-gettext/streams.php mysql

Backtrace

./../php/gettext/gettext.inc#41: require()
./libraries/select_lang.lib.php#477: require_once(./../php/gettext/gettext.inc)
./libraries/common.inc.php#563: require(./libraries/select_lang.lib.php)
./index.php#12: require_once(./libraries/common.inc.php)"

...

Не буду углубляться в дебри данной проблемы, часто бывает полезно забить и выключить эти предупреждения через конфигурацию php.ini. Для Vesta этот файл расположен в директории /etc/php/7.0/apache2/php.ini. Просто надо прописать в этот файл строчку для выключения предупреждений

error_reporting = ~E_DEPRECATED & E_ALL

Которая будет заставлять PHP забить на несоответствие разных версий языка PHP. После записи этой строчки необходимо перезагрузить сервер Apache командой в консоли, если у вас Ubuntu:

service apache2 restart

Далее, еще одна очень надоедливая проблема — это проблема с controluser и тоже очень часто встречается после установки Vesta.

Нам необходимо правильно установить имя пользователя и пароль для controluser’а. Они используются для соединения с хранилищем конфигурации phpMyAdmin (configuration storage), где хранятся настройки для дополнительных функций. Хранилище конфигурации не обязательно, phpMyAdmin может работать без него. Поэтому у нас есть два пути:

  1. Выключить хранилище конфигурации: $cfg['Servers'][$i]['pmadb'] = null; в config.inc.php;
  2. Настроить controluser‘а: создать пользователя в MySQL, предоставить ему определённый набор привилегий, затем добавить его имя и пароль в config.inc.php:
    $cfg['Servers'][$i]['controluser'] = '<ИМЯ_ПОЛЬЗОВАТЕЛЯ>'; 
    $cfg['Servers'][$i]['controlpass'] = '<ПАРОЛЬ>';

     

Для Ubuntu файл конфигурации на Vesta аходится по пути /etc/phpmyadmin/config.inc.php. Открываем данный файл и делаем один из вышеизложенных шагов. Я, к примеру, выключил данную функцию, так как она мне не нужна.

Подключение к MySQL в Python 3.6

👁 447 просмотров
1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...

Для работы с базой данных в MySQL нам сначала нужно установить библиотеку модуля Python для работы с этой базой данных. Сначала нам необходимо установить менеджер пакетов wheel для по команде

pip install wheel

Далее скачиваем пакет wheel по этой ссылке пакет для нашей системы. К примеру, мне подошел пакет mysqlclient-1.3.10-cp36-cp36m-win32.whl (md5). После того, как мы скачали надо выполнить данный wheel — файл через команду

pip install mysqlclient-1.3.10-cp36-cp36m-win32.whl

После этого набираем команды, чтобы проверить есть ли в наличии данная библиотека в модулях в установленном виде, через команды

python
>>>help("modules")

Которая возвратит все модули Python

Теперь можно в файле импортировать, подключиться и работать с БД, как в примере внизу

import MySQLdb

try:
    conn = MySQLdb.connect(host="127.0.0.1", user="login", 
                           passwd="password", db="baza")
except MySQLdb.Error as err:
    print("Connection error: {}".format(err))
    conn.close()

sql = "SELECT * FROM test"
    
try:
    cur = conn.cursor(MySQLdb.cursors.DictCursor)
    cur.execute(sql)
    data = cur.fetchall()
except MySQLdb.Error as err:
    print("Query error: {}".format(err))
    
print(data)

 

Импорт в MySQL большой базы в SQL-формате через Linux — консоль

👁 81 просмотров
1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...

Бывает, что ДБ большая и средства phpMyAdmin не позволяют вам импортировать эту базу на сервер MySQL. Для таких целей нужно использовать консоль систему и через команды MySQL импортировать. Для начала необходимо загрузить импортируемый файл в SQL формате на сервер в определенную директорию и далее выполнять команды.

Тут сразу могут возникнуть проблемы с правами, если выходит предупреждение или ошибка входа в MySQL через консоль, то заранее обновляем пароль MySQL пользователя. К примеру, обновляем пароль пользователя root по команде

# mysql -u root
# mysqladmin -u root password newpassword

Далее входим в MySQL под пользователем root с паролем newpassword и импортируем в базу dbname файл с данными file.sql

# mysql -u root -pnewpassword dbname < file.sql

Далее заходим в свой phpMyAdmin и убеждаемся, что база импортировалась удачно.

Сброс пароля администратора в Joomla через запрос SQL

👁 91 просмотров
1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...

Бывает случаи, когда теряется пароль и нет возможности восстановить пароль администратора панели управления Joomla, так как администратор не значится в списках обычных пользователей и его пароль нельзя восстановить через обычное восстановление(как я заметил), то одним из эффектиных решений по восстановлению является использование консоли запросов SQL в PhpMyAdmin. Для этого заходим в нужную таблицу, в нашем случае это таблица users и нажимаем на консоль запросов SQL для данной таблицы, как на картинке

post-remember-joomla-password-super-user

Далее вводим запрос


UPDATE `users`
  SET password= MD5( 'new_password' )
 WHERE id = 618;

post-remember-joomla-password-super-user-run-in-console

Жмем Ctrl+Enter и входим под новым паролем!

JMySQL — готовый CRUD Java — класс для работы с БД MySQL

👁 172 просмотров
1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...

Очень часто приходится работать с БД и выполнять однотипные длинные операции по добавлению, удалению и обновлению данных из БД MySQL на Java. Вместо того, чтобы каждый раз набирать команды и в целях уменьшения количества кода можно воспользоваться готовым классом от WebSofter. Последнюю версию класса можно скачать с репозитория GitHub.

Пример использования

//Поля данных для соединения с БД
        public String driver = "com.mysql.jdbc.Driver";
        public String server = "localhost:3306";
        public String db = "myDbName";
        public String user = "root";
        public String password = "123456";
//Создаем объект класса
public JMySQL db = new JMySQL();
//Соединяемся с БД
String status = db.connect(driver, server, db, user, password);
//Добавляем что-нибудь в БД
String result = db.insert("user",
                        new String[]{"login", "password", "email", "phone", "name", "surname"},
                        new String[]{"MyLogin", "123456", "mail@mail.com",  "8800 888 88 88", "David", "Amirkhanov"});

Описание методов

Текущая версия поддерживает 8 методов для работы с БД MySQL и дает возможность быстро и легко реализовать CRUD — структуру работы с БД из Java — кода.

  • String connect(…) — соединяет с БД;
  • String insert(…) — добавляет новые данные в таблице текущего подключения;
  • boolean update(…) — обновляет данные в таблице текущего подключения;
  • ResultSet read(…) — читает данные из таблицы текущего подключения;
  • boolean delete(…) — удаляет данные в таблице текущего подключения;
  • boolean contains(…) — проверяет значение на наличие по порядковому номеру столбца в таблице текущего подключения;
  • boolean contains(…)— проверяет значение на наличие по названию столбца в таблице текущего подключения;
  • void close(…) — закрывает соединение текущего подключения.

String connect(…)

Метод соединяет с БД и возвращает «ok» при удачном подключении или ошибку — при неудачном.

public String connect(String driver,String server,String db,String user, String password)
  • driver — драйвер БД. Для MySQL это значение равно «com.mysql.jdbc.Driver»;
  • server — адрес сервера;
  • user — пользователь БД;
  • password — пароль пользователя.

String insert(…)

Метод метод добавляет новые данные в текущую БД и возвращает «ok» при удачном добавлении или ошибку — при неудачном.

 public String insert(String tableName,String[] colNames,String[] colValues)
  • tableName — название таблицы;
  • colNames — массив названий колонок, в которую добавляются данные;
  • colValues — массив значений для соответствующих добавляемых колонок;

boolean update(…)

Метод обновляет данные в таблице в определенных колонках через SQL — запросы

 public boolean update(String tableName,String[] colNames,String[] colValues,String where)
  • tableName — название таблицы;
  • colNames — массив названий колонок, в которых обновляются данные;
  • colValues — массив значений для соответствующих обновляемых колонок;
  • where — SQL — запрос(без ключевого слова WHERE). Если запроса нет, то записываем пустую строку «»;

ResultSet read(…)

Метод читает данные из выбранной таблицы через SQL — запросы SELECT и WHERE. При удачном чтении возвращает массив данных в виде объекта ResultSet

public ResultSet read(String select,String tableName,String where)
  • select — SQL — запрос(значение пишется без SELECT и это значение, чаще всего, равно «*»);
  • tableName — название читаемой таблицы;
  • where — SQL — запрос(без ключевого слова WHERE). Если запроса нет, то записываем пустую строку «»;

boolean delete(…)

Удаляет данные из выбранной таблицы через SQL — запрос WHERE. Возвращает true при удачном выполнении и false — при неудачном

public boolean delete(String tableName, String where)

 

  • tableName — название таблицы
  • where— SQL — запрос(без ключевого слова WHERE). Если запроса нет, то записываем пустую строку «»;

boolean contains(…)

Проверяет значение на содержание его в определенной колонке таблицы через порядковый номер колонки. Возвращает true при нахождении и false — в противном случае

public boolean contains(String tableName,int colNumber, String eqValue)
  • tableName — название таблицы
  • colNumber— порядковый номер колонки;
  • eqValue— проверяемое значение;

boolean contains(…)

Проверяет значение на содержание его в определенной колонке таблицы через название колонки. Возвращает true при нахождении и false — в противном случае

public boolean contains(String tableName,int colName, String eqValue)
  • tableName — название таблицы
  • colNumber— название колонки;
  • eqValue— проверяемое значение;

void close(…)

Закрывает текущее соединение с БД. Ничего не возвращает и не принимает

public void close()

 

Сброс пароля mysql в консоли сервера Ubuntu через реконфигурацию

👁 116 просмотров
1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...

Часто приходиться менять пароль пользователя root в БД MySQL, особенно, если имя пользователя системы Ubuntu тоже root, то пароль необходим для предотвращения конфликта имен пользователей. Легким решением достичь этого является реконфигурация пакетов сервиса, в данном случае, MySQL. Сделаем это пошагово.

1. Проверка версии сервера MySQL:


apt-cache policy mysql-server

Данная команда возвратит нам версию установленного сервера MySQL, который понадобиться нам далее и должна вернуть что-то на подобие:

  Installed: 5.5.37-0ubuntu0.12.04.1

где 5.5 — версия нашего MySQL
2. Теперь запустим реконфигурацию пакетов сервера MySQL, записав версию:


sudo dpkg-reconfigure mysql-server-5.5

Далее выйдет «окно» в консоли с запросом нового пароля для пользователя root

mysql-reconf-change-passw-for-root-on-ubuntu

После вода подтверждаем во втором окне и , нажав на «Ок» сервер MySQL перезапустится и реконфигурация с новым паролем закончена.

3. Для входа под MySQL -сервер вводим команду


mysql -u root -p

и сервер запросит пароль. Вводим пароль и можно выполнять команды MySQL под пользователем root.