Користувальницькі налаштування

Налаштування сайту


networks:mysql

Розбіжності

Тут показані розбіжності між вибраною ревізією та поточною версією сторінки.

Посилання на цей список змін

Порівняння попередніх версійПопередня ревізія
Наступна ревізія
Попередня ревізія
networks:mysql [2013/04/04 14:07] olexande bilovolnetworks:mysql [Невідома дата] (поточний) – зовнішнє редагування (Невідома дата) 127.0.0.1
Рядок 1: Рядок 1:
 ====== MySQL ====== ====== MySQL ======
 +
 +[[http://habrahabr.ru/company/centosadmin/blog/227533/|Бекап баз данных – есть ли он?]]
 +
 +[[http://habrahabr.ru/post/105954/|MySQL шпаргалки habr]]
 +
 +[[http://habrahabr.ru/post/205964/|Ежедневная архивация mysql-баз под windows]]
 +
 +[[http://habrahabr.ru/company/centosadmin/blog/235131/|Наш велосипед или скрипты, облегчающие жизнь админа]]
 +
 +===== Работа с бекапами =====
 +
 +**Делаем бекап**
 +
 +''mysqldump -u USER -pPASSWORD DATABASE > /path/to/file/dump.sql''
 +
 +**Создаём структуру базы без данных**
 +
 +''mysqldump --no-data - u USER -pPASSWORD DATABASE > /path/to/file/schema.sql''
 +
 +**Если нужно сделать дамп только одной или нескольких таблиц**
 +
 +''mysqldump -u USER -pPASSWORD DATABASE TABLE1 TABLE2 TABLE3 > /path/to/file/dump_table.sql''
 +
 +**Создаём бекап и сразу его архивируем**
 +
 +''mysqldump -u USER -pPASSWORD DATABASE | gzip > /path/to/outputfile.sql.gz''
 +
 +**Создание бекапа с указанием его даты**
 +
 +''mysqldump -u USER -pPASSWORD DATABASE | gzip > `date +/path/to/outputfile.sql.%Y%m%d.%H%M%S.gz`''
 +
 +**Заливаем бекап в базу данных**
 +
 +''mysql -u USER -pPASSWORD DATABASE < /path/to/dump.sql''
 +
 +**Заливаем архив бекапа в базу**
 +
 +''gunzip < /path/to/outputfile.sql.gz | mysql -u USER -pPASSWORD DATABASE''
 +
 +или так
 +
 +''zcat /path/to/outputfile.sql.gz | mysql -u USER -pPASSWORD DATABASE''
 +
 +**Создаём новую базу данных**
 +
 +''mysqladmin -u USER -pPASSWORD create NEWDATABASE''
 +
 +===== Включить и первичная настройка =====
 +
 +<file conf rc.conf>mysql_enable="YES"</file>
 +
 +[[http://www.lissyara.su/articles/freebsd/programms/mysql/|Установка MySQL на сайте Лиссяры]]
 +
  
 ===== Посмотреть список пользователей MySQL ===== ===== Посмотреть список пользователей MySQL =====
Рядок 5: Рядок 58:
  
 <file>SELECT USER from mysql.user;</file> <file>SELECT USER from mysql.user;</file>
 +
 +===== Как посмотреть список таблиц и их структуру в MySQL =====
 +
 +<file>SHOW DATABASES; - список баз данных
 +SHOW TABLES [FROM db_name]; -  список таблиц в базе 
 +SHOW COLUMNS FROM таблица [FROM db_name]; - список столбцов в таблице
 +SHOW CREATE TABLE table_name; - показать структуру таблицы в формате "CREATE TABLE"
 +SHOW INDEX FROM tbl_name; - список индексов
 +SHOW GRANTS FOR user [FROM db_name]; - привилегии для пользователя.</file>
 +
 +
 +<file>SHOW VARIABLES; - значения системных переменных
 +SHOW [FULL] PROCESSLIST; - статистика по mysqld процессам
 +SHOW STATUS; - общая статистика
 +SHOW TABLE STATUS [FROM db_name]; - статистика по всем таблицам в базе</file>
 +
  
 ===== как узнать права пользователя? ===== ===== как узнать права пользователя? =====
Рядок 22: Рядок 91:
  
  
 +===== Пользователи MySQL =====
 +
 +Все пользователи MySQL хранятся в таблице user базы mysql.
 +Чтобы посмотреть список пользователей нужно переключиться на базу mysql и сделать выборку с помощью команды select:
 +
 +<file>mysql> use mysql;
 +mysql> select user,host from user;
 ++--------------------+------------+
 +| user                   | host         |
 ++--------------------+------------+
 +| root                   | 127.0.0.1  |
 +| root                   | testhost    |
 +| debian-sys-maint | localhost   |
 +| root                   | localhost   |
 ++--------------------+------------+</file>
 +
 +Из списка видно, что в базе имеются учетные данные суперпользователя //root// с возможностью подключаться только локально с данного сервера(адреса //127.0.0.1, localhost// и имя сервера //testhost//).
 +Еще есть системная учетная запись //debian-sys-maint// служит для внутренних системных целей СУБД MySQL.
 +
 +В предыдущей части я рассказывал как настроить в конфигурационном файле ///etc/mysql/my.cnf// удаленное подключение к серверу баз данных MySQL. 
 +Напомню: для этого в параметре //bind-address// выставляется IP адрес //0.0.0.0// вместо //127.0.0.1//, т.е. демон mysqld будет слушать не только локальный интерфейс //127.0.0.1//, а все адреса имеющиеся на сервере. 
 +В этой части я расскажу как создать пользователя mysql, какие права выдать для различных пользователей, как выставить пароль и хост с которого будет производиться подключение.
 +
 +
 +==== Пользователь для веб сайта ====
 +
 +Обычно различные веб приложения которые хранят информацию в базе //mysql// требуют создать отдельную учетную запись. Создадим пользователя //website-user// от имени которого будет работать наше веб приложение.
 +Пользователя можно создать через команду //create user//, а потом выдать права  //grant select,insert//..., но удобнее и быстрее сразу воспользоваться командой //grant//
 +
 +<file>mysql> GRANT SELECT,INSERT,UPDATE,ALTER,DELETE,CREATE,DROP,INDEX ON website.* to 'website-user'@'localhost' IDENTIFIED BY 'website-PASSWORD;
 +mysql> flush privileges;</file>
 +
 +Здесь я сразу указал:
 +
 +  *  выдать права //GRANT SELECT,INSERT,UPDATE,ALTER,DELETE,CREATE,DROP,INDEX// (возможно для вашего веб приложения список прав будет иной, обратитесь к документации веб приложения); 
 +  * на базу website.* - имя базы указывается по маске (все файлы с названием website). Здесь можно указать *.*, тогда пользователь будет иметь права на все базы;
 +  *  'websiteuser'@'localhost' - имя пользователя, и хост с которого этот пользователь может подключаться в базу;
 +  *   IDENTIFIED BY 'website-password' - указываем пароль пользователя.
 +
 +==== Администратор баз данных ====
 +
 +В следующем примере создадим учетную запись администратора баз данных который будет подключаться с  IP адреса компьютера администратора 192.168.8.10
 +
 +<file>mysql> create user 'admin'@'192.168.8.10' identified by 'blahblahblah';
 +Query OK, 0 rows affected (0.01 sec)</file>
 +
 +Выдадим полные права пользователю admin на базу website:
 +
 +<file>mysql> grant all on website.* to 'admin'@'192.168.8.10';
 +mysql> flush privileges;</file>
 +
 +Теперь администратор может подключиться со своего компьютера к серверу баз данных. В этом примере я использовал команду create user, а уже потом grant в принципе разницы нет как будут создаваться пользователи.
 +
 +
 +==== Пользователь backup ====
 +
 +Создадим пользователя backup для резервного копирования всех базы данных
 +
 +<file>mysql> GRANT SHOW DATABASES, SELECT, LOCK TABLES, RELOAD ON *.* to 'backup'@'%' identified by 'backup-password';
 +mysql> flush privileges;</file>
 +
 +  *  GRANT SHOW DATABASES, SELECT, LOCK TABLES, RELOAD - Здесь я указал необходимый набор прав для удаленного резервного копирования и в то же время достаточный для безопасного бэкапа;
 +  * *.* - Пользователь backup может просматривать все базы;
 +  *  'backup'@'%' - пользователь backup может подключаться с любого IP адреса. Обычно не требуется разрешать подключения с любого ip для целей резервного копирования, так как у сервера backup всегда постоянный IP адрес.
 +
 +==== Как поменять пароль? ====
 +
 +Чтобы поменять пароль можно воспользоваться командой mysqladmin эту команду нужно запускать в bash.
 +
 +<file>mysqladmin -u website-user -p password NEWPASSWORD</file>
 +
 +А так же можно воспользоваться командой (SQL синтаксис) из консоли MySQL
 +
 +<file>mysql> update user set password=PASSWORD("123") where user='website-user';</file>
 +
 +
 +==== Как сбросить пароль root? ====
 +
 +Поменять пароль root можно всеми теми же командами, что и для обычного пользователя. Но вот что делать если вы забыли пароль рута или по каким-то причинам его утеряли, тогда проделаем следующие операции.
 +1) Первым делом нужно остановить mysqld - демон MySQL сервера
 +
 +/etc/init.d/mysql stop
 +
 +2) Создать скрипт для смены пароля /root/reset.sql со следующим содержанием:
 +
 +<file>UPDATE mysql.user SET Password=PASSWORD('YOUR-NEW-MYSQL-PASSWORD') WHERE User='root';
 +FLUSH PRIVILEGES;</file>
 +
 +Сохраняем файл и запускаем демон mysqld в безопасном режиме с параметром --init-file
 +
 +<file>mysqld_safe --init-file=/root/reset.sql &</file>
 +
 +Ответ будет таким
 +
 +<file>nohup: ignoring input and redirecting stderr to stdout
 +Starting mysqld daemon with databases from /var/lib/mysql
 +mysqld_safe[20970]: started</file>
 +
 +Теперь можно просто убить процесс mysqld и запустить север заново:
 +
 +<file>killall mysqld
 +/etc/init.d/mysql start</file>
 +
 +Пароль пользователя root успешно изменен! Логинимся и проверяем.
 +Есть ещё один способ сменить пароль root - это запустить mysqld c параметром --skip-grant-tables и поменять пароль, но я не рекомендую им пользоваться так как это не безопасно и есть вероятно повредить таблицы с правами.
 +
 +[[http://cruw.blogspot.com/2011/11/mysql_13.html]]
 +
 +===== Replication =====
  
 +[[http://habrahabr.ru/post/194918/|Mysql Отложенная репликация или Коммивояжеры с Mysql-slave]]
  
  
networks/mysql.1365084473.txt.gz · Востаннє змінено: 2013/04/04 14:07 (зовнішнє редагування)

Якщо не вказано інше, вміст цієї Вікі підпадає під дію такої ліцензії: CC Attribution 4.0 International
CC Attribution 4.0 International Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki