Показаны сообщения с ярлыком mysql. Показать все сообщения
Показаны сообщения с ярлыком mysql. Показать все сообщения

воскресенье, 20 ноября 2011 г.

Пользователи MySQL

Пользователи MySQL
Все пользователи MySQL хранятся в таблице user базы mysql.
Чтобы посмотреть список пользователей нужно переключиться на базу mysql и сделать выборку с помощью команды select:
mysql> use mysql;
mysql> select user,host from user;
+--------------------+------------+
| user                   | host         |
+--------------------+------------+
| root                   | 127.0.0.1  |
| root                   | testhost    |
| debian-sys-maint | localhost   |
| root                   | localhost   |
+--------------------+------------+
Из списка видно, что в базе имеются учетные данные суперпользователя root с возможностью подключаться только локально с данного сервера(адреса 127.0.0.1localhost и имя сервера 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
mysql> GRANT SELECT,INSERT,UPDATE,ALTER,DELETE,CREATE,DROP,INDEX ON website.* to 'website-user'@'localhost' IDENTIFIED BY 'website-PASSWORD;
mysql> flush privileges;
Здесь я сразу указал:
  •  выдать права GRANT SELECT,INSERT,UPDATE,ALTER,DELETE,CREATE,DROP,INDEX (возможно для вашего веб приложения список прав будет иной, обратитесь к документации веб приложения); 
  • на базу website.* - имя базы указывается по маске (все файлы с названием website). Здесь можно указать *.*, тогда пользователь будет иметь права на все базы;
  • 'websiteuser'@'localhost' - имя пользователя, и хост с которого этот пользователь может подключаться в базу;
  • IDENTIFIED BY 'website-password' - указываем пароль пользователя.
Администратор баз данных
В следующем примере создадим учетную запись администратора баз данных который будет подключаться с  IP адреса компьютера администратора 192.168.8.10
mysql> create user 'admin'@'192.168.8.10' identified by 'blahblahblah';
Query OK, 0 rows affected (0.01 sec)
Выдадим полные права пользователю admin на базу website:
mysql> grant all on website.* to 'admin'@'192.168.8.10';
mysql> flush privileges;
Теперь администратор может подключиться со своего компьютера к серверу баз данных. В этом примере я использовал команду create user, а уже потом grant в принципе разницы нет как будут создаваться пользователи.


Пользователь backup
Создадим пользователя backup для резервного копирования всех базы данных
mysql> GRANT SHOW DATABASES, SELECT, LOCK TABLES, RELOAD ON on *.* to 'backup'@'%' identified by 'backup-password';
mysql> flush privileges;
  • GRANT SHOW DATABASES, SELECT, LOCK TABLES, RELOAD - Здесь я указал необходимый набор прав для удаленного резервного копирования и в то же время достаточный для безопасного бэкапа;
  • *.* - Пользователь backup может просматривать все базы;
  • 'backup'@'%' - пользователь backup может подключаться с любого IP адреса. Обычно не требуется разрешать подключения с любого ip для целей резервного копирования, так как у сервера backup всегда постоянный IP адрес.
Как поменять пароль?
Чтобы поменять пароль можно воспользоваться командой mysqladmin эту команду нужно запускать в bash.
mysqladmin -u website-user -p password NEWPASSWORD
А так же можно воспользоваться командой (SQL синтаксис) из консоли MySQL
mysql> update user set password=PASSWORD("123") where user='website-user';


Как сбросить пароль root?
Поменять пароль root можно всеми теми же командами, что и для обычного пользователя. Но вот что делать если вы забыли пароль рута или по каким-то причинам его утеряли, тогда проделаем следующие операции.
1) Первым делом нужно остановить mysqld - демон MySQL сервера
/etc/init.d/mysql stop
2) Создать скрипт для смены пароля /root/reset.sql со следующим содержанием:
UPDATE mysql.user SET Password=PASSWORD('YOUR-NEW-MYSQL-PASSWORD') WHERE User='root';
FLUSH PRIVILEGES;
Сохраняем файл и запускаем демон mysqld в безопасном режиме с параметром --init-file
mysqld_safe --init-file=/root/reset.sql &
Ответ будет таким
nohup: ignoring input and redirecting stderr to stdout
Starting mysqld daemon with databases from /var/lib/mysql
mysqld_safe[20970]: started
Теперь можно просто убить процесс mysqld и запустить север заново:
killall mysqld
/etc/init.d/mysql start
Пароль пользователя root успешно изменен! Логинимся и проверяем.
Есть ещё один способ сменить пароль root - это запустить mysqld c параметром --skip-grant-tables и поменять пароль, но я не рекомендую им пользоваться так как это не безопасно и есть вероятно повредить таблицы с правами.
На этом все, оставайтесь с блогом сурового ITшника, подписывайтесь на RSS и не забывайте нажать кнопочку "Мне нравиться" любой соц.сети, вам 1 клик, а мне бальзам на душу :)

воскресенье, 13 ноября 2011 г.

Установка и настройка MySQL



MySQL - реляционная система управления базами данных(СУБД). С января 2010 принадлежит корпорации Oracle. Является одной из самых распространенных СУБД, чаще всего используется для хранения информации сайтов, различных веб-приложений.
Из преимуществ - поддержка большого количества движков (MyISAM, InnoDB, HEAP, Merge, Archive, NDB), типов таблиц, кроссплатформенность - доступна практически для всех дистрибутивах GNU\Linux и других операционных систем.


Установка MySQL
В данной статье описана установка MySQL сервера в операционной системе Ubuntu Server 11.10, данный способ подходит для большинства deb-based операционных систем.   
Итак начнем с установки MySQL server и MySQL client:
sudo apt-get install mysql-server mysql-client
Установщик попросит ввести пароль для суперпользователя MySQL root@locahost
New password for the MySQL "root" user: ПАРОЛЬ
Repeat password for the MySQL "root" user: ПАРОЛЬ                           
Этот пароль будет использоваться для работы с базами под root.



Настройка MySQL
Все основные настройки MySQL храняться в конфигурационном файле /etc/mysql/my.cnf. В секции [mysqld] указаны параметры MySQL сервера.
Небольшой листинг конфига:
[mysqld]
 user = mysql
 socket = /var/run/mysqld/mysqld.sock
 port            = 3306
 basedir         = /usr
 datadir         = /var/lib/mysql
 tmpdir          = /tmp
 skip-external-locking
#
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
 bind-address            = 127.0.0.1

Описание:
user = mysql пользователь под кем работает демон mysqld;
При запуске демон открывает сокет /var/run/mysqld/mysqld.sock
По-умолчанию MySQL слушает порт 3306 на локальном интерфейсе 127.0.0.1 (или localhost). 
datadir = /var/lib/mysql - каталог с файлами баз данных.
Если к базам MySQL необходимо подключаться удаленно, выставляем параметр
bind-address = 0.0.0.0, если нет то оставляем по-умолчанию 127.0.0.1.


Перезапускаем сервис MySQL командой:
/etc/init.d/mysql restart
Настало время подключиться к консоли MySQL 
 mysql -u root -p -D mysql
В параметрах можно указать:
-u имя пользователя, если не указывать, то MySQL клиент попытается подключиться под  тем пользователем, который залогинился в операционную систему.
-p используется парольная авторизация
-D указывает в какую базу необходимо подключиться, если параметр не задан, то по-умолчанию MySQL клиент подключится в базу mysql


Базы данных MySQL
Узнать какие базы данных существуют можно командой:
mysql>show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
+--------------------+
В данном списке нет пользовательских баз данных, только 2 системные базы.
INFORMATION_SCHEMA - хранятся метаданные(структуры) всех баз данных.
MYSQL - системная база данных.
Создание базы данных выполняется из консоли MySQL:
mysql>create database website;
Теперь осталось создать таблицу managers:
mysql>CREATE TABLE managers (name VARCHAR(20), surname VARCHAR(20), job VARCHAR(20), sex CHAR(1), birth DATE);
В данном посте я рассказал как установить и настроить mysql, как создать mysql базу данных, как создаются таблицы.
Осталось создать и настроить права пользователей, об этом читайте мою следующую статью "как создать пользователя mysql и настроить права доступа, как поменять пароль суперпользоватя root и как обновить настройки пользователей".
На этом все, оставайтесь с блогом сурового ITшника, подписывайтесь на RSS и не забывайте нажать кнопочку "Поделиться" любой соц.сети внизу поста.

суббота, 5 ноября 2011 г.

Установка веб-сервера Apache (LAMP)



LAMP - короткая аббревиатура от Linux, Apache, MySQL и PHP.
Сегодня я расскажу как быстро установить веб-сервер Apache2 на базе операционной системы linux Ubuntu 11.10 Server с поддержкой PHP5 (mod_php) и MySQL5.В этой инструкции я использую доменное имя hostname.example.com и ip адрес 192.168.0.23, соответственно эти настройки вы меняете под себя.

Все операции будут проводиться с правами root, поэтому убедитесь в том, что вы авторизованы под пользователем root, в ubuntu переключаемся на рутовые привилегии так:
 sudo su - root  
Сначала установим MySQL 5 сервер:
 apt-get install mysql-server mysql-client
Установщик попросит ввести пароль для суперпользователя MySQL с логином root@locahost
New password for the MySQL "root" user: ПАРОЛЬ
Repeat password for the MySQL "root" user: ПАРОЛЬ
Установка Apache2
Веб-сервер Apache2 доступен из репозитория пакетов Ubuntu поэтому устанавливается как обычный пакет:


 apt-get install apache2
Теперь можно зайти браузером на страничку веб-сервера http://192.168.0.23 должна открыть страница заглушка (It works!).
По-умолчанию в Apache2 каталог с веб-сайтом находиться здесь /var/www/
Конфигурационный файл /etc/apache2/apache2.conf
Каталог с конфигурационными файлами /etc/apache2/
Директории для виртуальных хостов(сайтов) /etc/apache2/site-enabled/ и /etc/apache2/conf.d/
Каталог модулей /etc/apache2/mods-enabled/



Установка PHP5
Вместе с PHP5 поставим модуль Apache2 PHP5 module:
apt-get install php5 libapache2-mod-php5 
Перезапустим Apache2
/etc/init.d/apache2 restart
Создадим в корневой директории сайта /var/www/ небольшой тестовый файл info.php
nano /var/www/info.php
И добавим в этот файл следующий php код:
(К сожалению Blogger некорректно обрабатывает php код, поэтому вставляю картинку.)
Он выведет на страничку много информации о системе, веб-сервере и установленной версии PHP5.
Зайдем браузером на страницу http://192.168.0.23/info.php
Как видите Apache2 и PHP5 работают, если опуститься вниз страницы то можно увидеть подключенные к PHP5 модули.


Включаем поддержку MySQL в PHP5
Для этого необходимо установить PHP-шный модуль php5-mysql
 apt-get install php5-mysql
Чтобы узнать какие PHP5 модули доступны в вашей системе наберите
 apt-cache search php5
И выберите необходимый для вашего сайта модуль из списка. Например вот так можно установить полный набор модулей, который подойдет практически для любой CMS.
 apt-get install php5-mysql php5-curl php5-gd php5-idn php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-ming php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl  
Теперь перезапустим Apache2
/etc/init.d/apache2 restart
Обновим страницу http://192.168.0.23/info.php в браузере, появиться информация о поддержке MySQL
На этом все! Оставайтесь с блогом сурового ITшника и вы узнаете много полезного для себя.
Ссылка на оригинал http://www.howtoforge.com/installing-apache2-with-php5-and-mysql-support-on-ubuntu-11.10-lamp-p2