Как работать с MySQL?
В данном посте, я разъясню как администрировать MySQL. Я опишу, как решить наиболее часто встречаемые повседневные задачи. Опыт показывает, что даже «гуру» в MySQL, после продолжительного перерыва в работе, забывают напрочь все азы администрирования MySQL. Поэтому данный пост, я вижу полезным.
Что-бы, было удобнее ориентироваться, я привел список вопросов на которые вы найдете ответы. При нажатие на вопрос, вы попадает на его ответ в этом посте.
Обзор вариантов для работы с MySQL (командная строка Unix/Linux и Windows, PHP, phpMyAdmin)
Как узнать, какие таблицы содержит та или иная БД?
Как сделать резервную копию БД?
Как восстановить БД из резервной копии?
Как посмотреть список существующих аккаунтов?
Как изменить пароль для пользователя?
Итак вы установили MySQL, как с ним работать?
1. Обзор вариантов работы с MySQL
— C помощью PHP (функция mysqli_query)
В PHP с MySQL можно работать как через ООП (методы класса mysqli), так и через функции (mysqli_…() ).
Я кратко покажу как работать с MySQL через функции.
Первым делом, надо установить соединение с MySQL
1 |
$link=mysqli_connect(имя_хоста, имя_пользователя, пароль, имя_бд); |
Где
имя_хоста, имя_пользователя, пароль и имя_бд – строковые значение
Функция возвращает дескриптор соединения с базой, дальше мы будем работать с ним.
И самое важное, сделаем SQL запрос к MySQL.
1 2 |
$query=’SQL запрос’; $result_query=mysqli_query($link, $query); |
Где $result_query – результат запроса в виде объекта класса mysqli_result, для извлечения из него информации существует несколько функций, более подробно тут.
Приведу пример
допустим, в результате SQL запроса, мы получили некую таблицу, для того чтобы разобрать её по строкам и столбцам, можно использовать следующий код
1 2 3 4 |
$row = mysqli_fetch_all($result_query, MYSQLI_ASSOC); foreach($row as $r) { echo $r[‘имя_столбца1’]." ".$r[‘имя_столбца2’]."<br>"; } |
Где
MYSQLI_ASSOC – константа, указывающая что результат должен быть ассоциативный массив (иначе мы не сможем обращаться к столбцам по их именам)
$row – массив строк возвращенной таблицы
$r – одна строка – ассоциативный массив из значений столбцов, обращаясь к столбцам можно по именам
Далее очистим переменную с результатом
1 |
mysqli_free_result($result_query); |
И наконец, закроем соединение с MySQL
1 |
$result=mysqli_close(); |
Как работать в PHP c MySQL более подробно мы можете узнать в официальной русскоязычной документации тут.
— С помощью phpMyAdmin
На вкладке SQL, вы можете вводить свои запросы
— C помощью командной строки Unix/Linux и Windows
Для входа в СУБД MySQL c помощью командной строки Unix/Linux и Windows необходимо авторизоваться, т.е. указать в качестве кого вы её посещаете.
Для этого пишем
1 |
mysql –u root –p |
жмем Enter, после чего вам предлагают вести пароль
Enter password:
после удачного ввода пароля вы попадаете в монитор MySQL
1 |
mysql> |
В данном режиме вы можете выполняются SQL запросы. Для выхода из него необходимо вести QUIT.
2. Администрирование MySQL
Не касаясь в данном посте подробностей языка SQL, приведу несколько команд, с помощью которых вы сможете узнать версию MySQL, посмотреть список БД, узнать какие таблицы содержит та или иная БД, сделать дамп (резервную копию) БД, восстановить БД из дампа, посмотреть аккаунты пользователей , создать аккаунт пользователя, удалить аккаунт пользователя, изменить пароль root пользователя.
Использовать SQL команды вы можете в PHP скрипте, в мониторе MySQL (командной строке) и с помощью phpMyAdmin. Также, хочу заметить, что регистр в SQL значения не имеет.
Как узнать версию MySQL?
1 |
select version(); |
Как посмотреть список БД?
1 |
show databases; |
Как узнать какие таблицы содержит та или иная БД?
1 2 |
use имя_бд; show tables; |
Как сделать дамп (резервную копию) БД? (случай для командной строки и phpMyAdmin)
Для создания резервной копии необходимо использовать специальную утилиту – mysqldump. Если вы сейчас находитесь в мониторе MySQL (т.е. в mysql>), выйдите из него с помощью QUIT.
Резервная копия делается следующим образом
1 |
mysqldump -u имя_юзера -p --opt имя_БД > имя_дампа.sql |
Аналогичные действия можно сделать с помощью phpMyAdmin не используя SQL, для этого выберем в левом столбце phpMyAdmin — БД, далее нажмите на вкладку «Экспорт» и далее ОК.
В результате с помощью браузера к вам на компьютер начнет загружаться резервная копия БД.
Как восстановить БД из дампа или резервной копии (случай для командной строки и phpMyAdmin)?
Что бы восстановить БД из резервной копия нужно сначала создать БД, в которой вы будете восстанавливать дамп:
1 |
mysql> create database имя_БД; |
Далее выйдем с помощью QUIT и восстановим дамп в заданную БД, с помощью команды
1 |
mysql -u root -p имя_БД < имя_дампа.sql |
Аналогичные действия можно сделать с помощью phpMyAdmin не используя SQL, для этого выберем в левом столбце БД, далее нажмите на вкладку «Импорт», затем жмете «Выберите файл» и ОК.
Как посмотреть аккаунты пользователей?
Список пользователей храниться в БД с именем mysql (доступна только root пользователю)
1 2 |
use mysql; select user, host from user; |
В результате будет выведена таблица, с столбцами user и host, где указываются имена юзеров и с каких хостов они могу заходить.
Как создать акаунт?
Создадим пользователя user1, назначим ему пароль password
1 |
grant usage on *.* to user1@s-engineer.ru identified by "password"; |
Назначим все привилегии для пользователя user1 к базе db1
1 |
grant all privileges on db1.* to user1@s-engineer.ru; |
Пользователь user1 может подключаться к базе данных db1 только с этого сервера, т.е. локально, удаленно не может. Чтобы создать пользователя который бы смог подключаться удаленно, вместо «s-engineer.ru» необходимо писать «%».
grant usage on *.* to user1@% identified by «password»;
Как удалить пользователя?
1 |
DROP USER user1@s-engineer.ru; |
Как изменить пароль пользователя?
1 |
SET PASSWORD FOR root@s-engineer.ru = PASSWORD(“newpass”); |
Мы изменили пароль на newpass для пользователя root с локальной машины
(если ошибка, попробуйте изменить кавычки на двойные в командной строке)
P.S. Если для разработки вам нужна уже готовая связка Apache+PHP+MySQL работающая под Windows, то я рекомендую установить «Денвер» (джентельменский набор для web-разработчика). Скачать его можно с официального сайта — http://www.denwer.ru/
Вам будет интересно:
Буду признателен если вы поделитесь данным постом
Дополнение по последнему пункту: начиная с версии 5.6 первой командой после установки mysql-сервера обязательно должна быть:
set password=password(‘soMeRaNdomStrIng’);
Иначе не даст делать никаких запросов.
Сисадмин спасибо за замечание, проверю.
С удовольствием почитаю ваш блог на выходных.