Мы — долго запрягаем, быстро ездим, и сильно тормозим.

FreeBSD
  настройка
  подсчёт трафика
  программы
  frox
  SARG
  samba & ClamAV
  named
  proftpd
  cacti
  SAMBA+AD+NT ACL
  MySQL
  hylafax
  DDNS+DHCP
  cvsupd
  Samba как PDC
  Основы LDAP
  LDAP+SSL
  LDAP auth
  knockd
  rsync
  MRTG
  Rejik
  Jabber - OpenFire
  Samba(PDC) + Ldap
  squid+AD
  ATSlog
  vsftpd
  LDAP: samba, dns, dhcp
  Free-SA
  cups-samba на samba+AD
  irc + services
  Nagios - мониторинг сети
  TeamSpeak
  icecast2
  verlihub (p2p)
  Icecast2 + Darkice
  OOPS
  vsftpd + mysql
  Amanda
  HAVP
  Рыбалка на FreeBSD
  DNS сервер NSD
  DNS сервер Unbound
  mpd5, msmtp, dynamic ip
  ProFTPd + LDAP
  OpenVPN + LDAP
  Samba (PDC+BDC)
  BIND & AD
  POWERDNS
  3proxy
  eGroupWare
  GLPI
  SugarForge CRM
  Bacula
  Mysql - базовое описание
  Asterisk IP PBX
  Samba & CUPS & AD & ACL
  SMSTools 3
  Samba+ NT ACL
  phpmyadmin
  1С:Предприятие 8.1
  PurefFTPd
  qemu network
  AimSniff
  comms/scmxx
  Zoneminder
  Openfire Jabber Server
  Zoneminder 2
  Принт-Сервер Samba+LPD & AD
  Кластер OpenLDAP 2.4
  Lightsquid
  Установка Zabbix-1.6
  Установка net2ftp
  VSFTPD + AD && MySQL
  Network UPS Tools
  mpd5 L2TP client
  Apache 2.2 as a proxy
  ejabberd+mysql+icq
  HotSpot
  Установка и использование Zenoss на FreeBSD 7.2
  mysql-proxy
  DNS zones
  squid+sams+sqstat
  transmission-daemon
  Squid+AD (group access)
  named 9.7.0
  SysAid Server
  MySQL Master+Master
  proftpd file auth&quota
  usb_modeswitch
  NSDadmin
  iperf Тест скорости между хостами
  Простой факс-сервер mgetty+sendfax
  SQUID-MultiCpuSystem
  vsftpd + system users
  Syslog server
  Температура в серверной
  Nagios+Digitemp
  Avast! FreeBSD
  Настройка git+gitosis
  Firefox SyncServer
  Scan+Print server FreeBSD 9
  proftpd,pgsql,web
  почтовые системы
  Шелезяки
  Мелочи
  Файловая система
  WWW
  Security
  system
  Games Servers
  X11
  Programming
Очумелые Ручки
OpenBSD
Cisco


www.lissyara.su —> статьи —> FreeBSD —> программы —> Mysql - базовое описание

Mysql - базовое описание

Автор: Morty.


                 

Базовое описание, и принципы работы с MySQL


SQL - язык структурированных запросов для доступа к базам данных и их управления.
SQL может: выполнять запросы к базе данных
      извлекать данные из базы данных
      добавить записи в базу данных
      обновить записи в базе данных
      удалить записи из базы данных
      создавать новые базы данных
      создавать новые таблицы в базе данных
      создавать хранимые процедуры в базе данных
      настроить разрешения для таблиц
Принятые переменные:
table_name - имя таблицы
column_name - колонки(поля)
value - значения
pattern - шаблон
database_name - имя базы данных (БД)

SQL является стандартным - но ...
Несмотря на то, что SQL придерживаеться ANSI (Американского национального института стандартов)
стандарта, существует много различных диалектов языка SQL. Вместе с тем, чтобы быть
совместимым со стандартом ANSI, все они поддерживают, по крайней мере, основные
команды (например, SELECT, UPDATE, DELETE, INSERT, WHERE). Большинство из реляционных
баз данных имеют свои собственные расширения(функций, команд...) в дополнение к SQL стандарту!
В данном описании я буду рассматривать язык SQL в разрезе MySQL.
Чаще всего база данных содержит одну или несколько таблиц ;-). Каждая таблица
имеет определенное имя (например, "people" или "cars"). Таблицы содержат
поля (колонки) с записями(строки). Сейчас забежим немного наперед, тоесть создадим
сразу БД, табличку и заполним её. Т.к. я не знал каким образом лучше построить
материал, решил что лучший вариант это наглядный, тоесть писать в
примерах опираясь на тестовую БД.Поэтому весь описанный материал будет опираться на бд
которая приведена ниже...


mysql> create database mytest;
Query OK, 1 row affected (0.00 sec)

mysql> use mytest;
Database changed
mysql> CREATE TABLE people(id int,Name varchar(255),LastName varchar(255
    -> addr varchar(255), telnumb int,birthdaydate date);
Query OK, 0 rows affected (0.03 sec)

mysql> show fields from people;
+---------------+--------------+------+-----+---------+-------+
| Field         | Type         | Null | Key | Default | Extra |
+---------------+--------------+------+-----+---------+-------+
| id            | int(11)      | YES  |     | NULL    |       |
| Name          | varchar(255) | YES  |     | NULL    |       |
| LastName      | varchar(255) | YES  |     | NULL    |       |
| addr          | varchar(255) | YES  |     | NULL    |       |
| telnumb       | int(11)      | YES  |     | NULL    |       |
| birhthdaydate | date         | YES  |     | NULL    |       |
+---------------+--------------+------+-----+---------+-------+
6 rows in set (0.00 sec)

mysql> insert into people(id,Name,LastName,addr,telnumb,birthdaydate)
     -> values (1,'Vasia','Pupkin','selo Slavne','452','1922-10-23');
Query OK, 1 row affected, 1 warning (0.00 sec)
........
mysql> select * from people;
+----+-------+-----------+-------------+---------+--------------+
| id | Name  | LastName  | addr        | telnumb | birthdaydate |
+----+-------+-----------+-------------+---------+--------------+
|  1 | Vasia | Pupkin    | selo Slavne |     452 | 1922-10-23   |
|  2 | Petia | Zatochkin | g.Zhitomir  |      23 | 1995-04-12   |
|  3 | Semen | Krivoy    | pgt. Pobeda |     231 | 1992-02-11   |
|  4 | Masha | Zolotaya  | selo Slavne | 5551232 | 1980-05-05   |
+----+-------+-----------+-------------+---------+--------------+
4 rows in set (0.00 sec)

mysql>

Таблица содержит 4 строки и 6 колонок (id,Name, Lastname,addr,telnumb,birthdaydate).

Все действия в базе данных осуществляется с помощью SQL запросов.
Например следующий SQL запрос выведет все записи из таблицы "people" :
SELECT * from people;
(Для SQLя не важен регистр символов, заглавные, прописные, все равны
(SELECT и select - одно и тоже), также важно помнить что MySQL
требует чтобы каждый запрос заканчивался символом ";")

Для более легкого запоминания и понимания можно запросы разделить на
3 типа: DML(Data Manipulation Language) - управление данными(УД),
и определение(вид) данных DDL(Data Definition Language)(ОД).
И еще пожалуй системные запросы(СЗ)DCL (Data Control Language).Также необходимо всегда иметь под рукой информацию о том какие типы данных
применяються в таблицах MySQL. И в конце концов определить пользователей и их права.При необходимости написания скриптов, можно посмотреть 2 простых примера
К УД можно отнести:
SELECT - извлечение(выборка) данных из БД
UPDATE - обновление данных в БД
DELETE - удаление данных из БД
INSERT INTO - вставка(заполнение) новыми данными БД
к ОД:
CREATE DATABASE - создать новую БД
CREATE TABLE - создать новую таблицу
ALTER TABLE - изменить таблицу
DROP TABLE - удалить таблицу
CREATE INDEX - создать индекс (поисковый ключ)
к СЗ:
show processlist - показать процессы БД

DML(Data Manipulation Language) - управление данными(УД)


SELECT - используеться для того чтобы делать выборки из БД
синтаксис:
SELECT column_name(s) FROM table_name;

column_names - если необходимо выбрать несколько полей,
они должны указываться через запятую, например
mysql> SELECT Name, LastName from people;
+-------+-----------+
| Name  | LastName  |
+-------+-----------+
| Vasia | Pupkin    |
| Petia | Zatochkin |
| Semen | Krivoy    |
| Masha | Zolotaya  |
+-------+-----------+
4 rows in set (0.00 sec)

mysql>

* - всё
SELECT * from people;
выведет всё(все поля) что есть в таблице people;

Иногда в таблице, некоторые из колонок могут содержать повторяющиеся значения.
Это не проблема, т.к. всегда можно сделать выборку лишь тех значений
который разняться между собой(не дублируються). Ключевое слово DISTINCT может быть использовано для этих целей.
синтаксис:
SELECT DISTINCT column_name(s) FROM table_name;

например:
mysql> SELECT DISTINCT addr FROM people;
+-------------+
| addr        |
+-------------+
| selo Slavne |
| g.Zhitomir  |
| pgt. Pobeda |
+-------------+
3 rows in set (0.00 sec)

WHERE - используется для получения только тех записей,
которые соответствуют определенному критерию.
синтаксис:
SELECT column_name(s) FROM table_name WHERE column_name=value;


mysql> SELECT * FROM people WHERE Name='Vasia';
+------+-------+----------+-------------+---------+--------------+
| id   | Name  | LastName | addr        | telnumb | birthdaydate |
+------+-------+----------+-------------+---------+--------------+
|    1 | Vasia | Pupkin   | selo Slavne |     452 | 1922-10-23   |
+------+-------+----------+-------------+---------+--------------+
1 row in set (0.00 sec)

mysql>

Здесь также могут использоваться операторы:
=    равно
<>    не равно
>    больше
<    меньше
>=    больше либо равно
<=    меньше либо равно
...
здесь еще много чего может быть... см. оффиц сайт либо любую книгу по MySQL
Операторы AND & OR
Оператор AND отображает данные если выполняются оба условия.
Оператор OR отображает данные если выполняеться хотябы одно условие.

mysql> SELECT * FROM people WHERE Name='Vasia' AND LastName='Pupkin';
+----+-------+----------+-------------+---------+--------------+
| id | Name  | LastName | addr        | telnumb | birthdaydate |
+----+-------+----------+-------------+---------+--------------+
|  1 | Vasia | Pupkin   | selo Slavne |     452 | 1922-10-23   |
+----+-------+----------+-------------+---------+--------------+
1 row in set (0.01 sec)

mysql>


mysql> SELECT * FROM people WHERE Name='Semen' OR LastName='Zolotaya';
+----+-------+----------+-------------+---------+--------------+
| id | Name  | LastName | addr        | telnumb | birthdaydate |
+----+-------+----------+-------------+---------+--------------+
|  3 | Semen | Krivoy   | pgt. Pobeda |     231 | 1992-02-11   |
|  4 | Masha | Zolotaya | selo Slavne | 5551232 | 1980-05-05   |
+----+-------+----------+-------------+---------+--------------+
2 rows in set (0.00 sec)

mysql>

Смешивание AND & OR

mysql> SELECT * FROM people WHERE Name='Petia' AND (LastName='Zatochkin' OR
    ->
    -> LastName='Krivoy');
+----+-------+-----------+------------+---------+--------------+
| id | Name  | LastName  | addr       | telnumb | birthdaydate |
+----+-------+-----------+------------+---------+--------------+
|  2 | Petia | Zatochkin | g.Zhitomir |      23 | 1995-04-12   |
+----+-------+-----------+------------+---------+--------------+
1 row in set (0.01 sec)

mysql>

ORDER BY - оператор сортировки, используется для сортировки результатов,
установленных указанной колонки.ORDER BY по умолчанию сортирует
записи в возрастающем порядке.(ASC)
Если вы хотите сортировать записи в (обратном)порядке убывания,
вы можете использовать ключевое слово DESC.
синтаксис:
SELECT column_name(s) FROM table_name ORDER BY column_name(s) ASC|DESC 


mysql> SELECT * FROM people ORDER BY Name;
+----+-------+-----------+-------------+---------+--------------+
| id | Name  | LastName  | addr        | telnumb | birthdaydate |
+----+-------+-----------+-------------+---------+--------------+
|  4 | Masha | Zolotaya  | selo Slavne | 5551232 | 1980-05-05   |
|  2 | Petia | Zatochkin | g.Zhitomir  |      23 | 1995-04-12   |
|  3 | Semen | Krivoy    | pgt. Pobeda |     231 | 1992-02-11   |
|  1 | Vasia | Pupkin    | selo Slavne |     452 | 1922-10-23   |
+----+-------+-----------+-------------+---------+--------------+
4 rows in set (0.01 sec)

в обратном порядке
mysql> SELECT * FROM people ORDER BY Name DESC;
+----+-------+-----------+-------------+---------+--------------+
| id | Name  | LastName  | addr        | telnumb | birthdaydate |
+----+-------+-----------+-------------+---------+--------------+
|  1 | Vasia | Pupkin    | selo Slavne |     452 | 1922-10-23   |
|  3 | Semen | Krivoy    | pgt. Pobeda |     231 | 1992-02-11   |
|  2 | Petia | Zatochkin | g.Zhitomir  |      23 | 1995-04-12   |
|  4 | Masha | Zolotaya  | selo Slavne | 5551232 | 1980-05-05   |
+----+-------+-----------+-------------+---------+--------------+
4 rows in set (0.00 sec)

LIMIT - используеться для вывода определенной группы(кол-ва) данных
синтаксис:
SELECT column_name(s) FROM table_name LIMIT a,b;

a - число , с какой позиции выдавать данные
b - кол-во выводимых строк
примечание: также можно задавать 1 цифру, не две.
mysql> SELECT * from people LIMIT 1,3;
+----+-------+-----------+-------------+---------+--------------+
| id | Name  | LastName  | addr        | telnumb | birthdaydate |
+----+-------+-----------+-------------+---------+--------------+
|  2 | Petia | Zatochkin | g.Zhitomir  |      23 | 1995-04-12   |
|  3 | Semen | Krivoy    | pgt. Pobeda |     231 | 1992-02-11   |
|  4 | Masha | Zolotaya  | selo Slavne | 5551232 | 1980-05-05   |
+----+-------+-----------+-------------+---------+--------------+
3 rows in set (0.00 sec)

LIKE - этот оператор используеться для поиска данных в полях по шаблону.
синтаксис:
SELECT column_name(s) FROM table_name WHERE column_name LIKE pattern;

mysql> SELECT * from people WHERE Name LIKE '%em%';
+----+-------+----------+-------------+---------+--------------+
| id | Name  | LastName | addr        | telnumb | birthdaydate |
+----+-------+----------+-------------+---------+--------------+
|  3 | Semen | Krivoy   | pgt. Pobeda |     231 | 1992-02-11   |
+----+-------+----------+-------------+---------+--------------+
1 row in set (0.01 sec)

mysql> SELECT * from people WHERE telnumb LIKE '2%';
+----+-------+-----------+-------------+---------+--------------+
| id | Name  | LastName  | addr        | telnumb | birthdaydate |
+----+-------+-----------+-------------+---------+--------------+
|  2 | Petia | Zatochkin | g.Zhitomir  |      23 | 1995-04-12   |
|  3 | Semen | Krivoy    | pgt. Pobeda |     231 | 1992-02-11   |
+----+-------+-----------+-------------+---------+--------------+
2 rows in set (0.01 sec)

mysql>

IN - позволяет задавать несколько значений в поиск
синтаксис:
SELECT column_name(s) FROM table_name WHERE column_name IN (value1,value2,..)

mysql> SELECT * from people WHERE LastName IN('Krivoy','Zolotaya');
+----+-------+----------+-------------+---------+--------------+
| id | Name  | LastName | addr        | telnumb | birthdaydate |
+----+-------+----------+-------------+---------+--------------+
|  3 | Semen | Krivoy   | pgt. Pobeda |     231 | 1992-02-11   |
|  4 | Masha | Zolotaya | selo Slavne | 5551232 | 1980-05-05   |
+----+-------+----------+-------------+---------+--------------+
2 rows in set (0.00 sec)

BETWEEN - оператор с помощью которого можно вывести диапазон данных
который ограниченный двумя значениями полей.
синтаксис:
SELECT column_name(s) FROM table_name WHERE \
column_name BETWEEN value1 AND value2;

mysql> select * from people where id between 1 and 3;
+----+-------+-----------+-------------+---------+--------------+
| id | Name  | LastName  | addr        | telnumb | birthdaydate |
+----+-------+-----------+-------------+---------+--------------+
|  1 | Vasia | Pupkin    | selo Slavne |     452 | 1922-10-23   |
|  2 | Petia | Zatochkin | g.Zhitomir  |      23 | 1995-04-12   |
|  3 | Semen | Krivoy    | pgt. Pobeda |     231 | 1992-02-11   |
+----+-------+-----------+-------------+---------+--------------+
3 rows in set (0.00 sec)

Для того чтобы двигаться дальше создадим еще одну табличку...
Еще одна таблица cars в тойже БД mytest

+------+----------------+-----------+
| C_id | Cmodel         | GosNumber |
+------+----------------+-----------+
|    1 | GAZ            |      2211 |
|    2 | Zaporogets     |      4521 |
|    3 | Volga-supercar |      7711 |
+------+----------------+-----------+


mysql> create table cars(C_id int, Cmodel varchar(255), GosNumber int);
Query OK, 0 rows affected (0.01 sec)

mysql> show columns from cars;
+-----------+--------------+------+-----+---------+-------+
| Field     | Type         | Null | Key | Default | Extra |
+-----------+--------------+------+-----+---------+-------+
| C_id      | int(11)      | YES  |     | NULL    |       |
| Cmodel    | varchar(255) | YES  |     | NULL    |       |
| GosNumber | int(11)      | YES  |     | NULL    |       |
+-----------+--------------+------+-----+---------+-------+
3 rows in set (0.00 sec)
mysql> insert into cars values(1,'GAZ','2211'),(2,'Zaporogets','4521'),
     ->(3,'Volga-supercar','7711');
Query OK, 3 rows affected (0.01 sec)
Records: 3  Duplicates: 0  Warnings: 0
mysql> select * from cars;
+------+----------------+-----------+
| C_id | Cmodel         | GosNumber |
+------+----------------+-----------+
|    1 | GAZ            |      2211 |
|    2 | Zaporogets     |      4521 |
|    3 | Volga-supercar |      7711 |
+------+----------------+-----------+
3 rows in set (0.00 sec)

mysql> show tables;
+------------------+
| Tables_in_mytest |
+------------------+
| cars             |
| people           |
+------------------+
2 rows in set (0.00 sec)

mysql>

JOIN - используется для запроса(вывода) данных из двух или более таблиц.
mysql> SELECT * from cars join people;

...вывод убрал, т.к. не очень красиво он тут "вписываеться"
UNION - оператор сочетает вывод двух и более SELECT операторов.
примечание: каждый запрос SELECT в сочетании с UNION должны иметь одинаковое
число столбцов. Колонки также должны иметь аналогичные типы данных.
синтаксис:
SELECT column_name(s) FROM table_name1 UNION
SELECT column_name(s) FROM table_name2;

делаем дополнительную таблицу cars2
+------+-----------+--------+
| id   | model     | number |
+------+-----------+--------+
|    1 | Mers      |   3411 |
|    2 | BMW       |   3317 |
|    3 | Velosiped |   3456 |
+------+-----------+--------+
mysql> SELECT * from cars UNION SELECT * FROM cars2;
+------+----------------+-----------+
| C_id | Cmodel         | GosNumber |
+------+----------------+-----------+
|    1 | GAZ            |      2211 |
|    2 | Zaporogets     |      4521 |
|    3 | Volga-supercar |      7711 |
|    1 | Mers           |      3411 |
|    2 | BMW            |      3317 |
|    3 | Velosiped      |      3456 |
+------+----------------+-----------+
6 rows in set (0.00 sec)

UPDATE - используется для обновления существующих записей в таблице.
синтаксис:
UPDATE table_name SET column1=value, column2=value2,.. \
WHERE some_column=some_value;

работать с данной конструкцией надо внимательно т.к. например если указать обновление
значений полей без "доп фильтра" можно затереть данные которые вам на самом деле нет
нужды трогать.
Например:
UPDATE people SET Name='Vasia', LastName='Mikolich';

приведет таблицу к такому виду
mysql> update people set Name='Vasia', LastName='Mikolich';
Query OK, 4 rows affected (0.00 sec)
Rows matched: 4  Changed: 4  Warnings: 0

mysql> select * from people;
+----+-------+----------+-------------+---------+--------------+
| id | Name  | LastName | addr        | telnumb | birthdaydate |
+----+-------+----------+-------------+---------+--------------+
|  1 | Vasia | Mikolich | selo Slavne |     452 | 1922-10-23   |
|  2 | Vasia | Mikolich | g.Zhitomir  |      23 | 1995-04-12   |
|  3 | Vasia | Mikolich | pgt. Pobeda |     231 | 1992-02-11   |
|  4 | Vasia | Mikolich | selo Slavne | 5551232 | 1980-05-05   |
+----+-------+----------+-------------+---------+--------------+
4 rows in set (0.01 sec)

т.е. если необходимо обновить только поле где id=1
то нужно писать так:
mysql> UPDATE people SET Name='Mikola', LastName='Mikolich' WHERE id='1';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> select * from people;
+----+--------+-----------+-------------+---------+--------------+
| id | Name   | LastName  | addr        | telnumb | birthdaydate |
+----+--------+-----------+-------------+---------+--------------+
|  1 | Mikola | Mikolich  | selo Slavne |     452 | 1922-10-23   |
|  2 | Petia  | Zatochkin | g.Zhitomir  |      23 | 1995-04-12   |
|  3 | Semen  | Krivoy    | pgt. Pobeda |     231 | 1992-02-11   |
|  4 | Masha  | Zolotaya  | selo Slavne | 5551232 | 1980-05-05   |
+----+--------+-----------+-------------+---------+--------------+
4 rows in set (0.00 sec)

mysql>

т.к. здесь присутствует WHERE соответсвенно можно комбинировать с AND & OR.
DELETE- удаление записей
синтаксис:
DELETE FROM table_name WHERE some_column=some_value;

mysql> delete from people where id=1;
Query OK, 1 row affected (0.00 sec)

mysql> slect * from people;
ERROR 1064 (42000): You have an error in your SQL syntax; check the 
manual that corresponds to your MySQL server version for the right
syntax to use near 'slect * from people' at line 1
mysql> select * from people;
+----+-------+-----------+-------------+---------+--------------+
| id | Name  | LastName  | addr        | telnumb | birthdaydate |
+----+-------+-----------+-------------+---------+--------------+
|  2 | Petia | Zatochkin | g.Zhitomir  |      23 | 1995-04-12   |
|  3 | Semen | Krivoy    | pgt. Pobeda |     231 | 1992-02-11   |
|  4 | Masha | Zolotaya  | selo Slavne | 5551232 | 1980-05-05   |
+----+-------+-----------+-------------+---------+--------------+
3 rows in set (0.00 sec)

mysql>

INSERT - вставка(заполнение) данных в полях таблицы
синтаксис:
INSERT INTO table_name (column1, column2, column3,...) 
VALUES (value1, value2, value3,...);

columnN - названия полей в таблице table_name
valueN  - значения полей, т.е. содержимое, те данные которые будут в поле
пример показан выше, где заполняеться таблица cars
mysql> insert into cars values(1,'GAZ','2211'),
->(2,'Zaporogets','4521'),(3,'Volga-supercar','7711');
Query OK, 3 rows affected (0.01 sec)
Records: 3  Duplicates: 0  Warnings: 0
mysql> select * from cars;
+------+----------------+-----------+
| C_id | Cmodel         | GosNumber |
+------+----------------+-----------+
|    1 | GAZ            |      2211 |
|    2 | Zaporogets     |      4521 |
|    3 | Volga-supercar |      7711 |
+------+----------------+-----------+
3 rows in set (0.00 sec)


DDL(Data Definition Language)(УД)


CREATE DATABASE - создает базу данных
синтаксис:
CREATE DATABASE database_name;

CREATE TABLE - для создания таблиц в БД
синтаксис:
CREATE TABLE table_name
(
column_name1 data_type,
column_name2 data_type,
column_name3 data_type,
....
);

где table_name - имя таблицы, column_name1 - имя столбца,
data_type - тип данных для этого солбца;
Какие типы данных могут быть в MySQL описано в разделе "Типы данных"
пример создания таблицы cars:
CREATE TABLE cars(C_id int,CModel varchar(255),Gos_Number int);

Создание таблицы people:
CREATE TABLE people(id int,Name varchar(255),LastName varchar(255),
addr varchar(255), telnumb int,birhthdaydate date);

понятно что таблицы будут пустые , и их предстоит заполнить.
ALTER TABLE - используется для изменения структуры таблиц.
Для того чтобы добавить(ADD)
колонку в таблицу необходимо выполнить следующее:
синтаксис:
'Добавить'
ALTER TABLE table_name ADD column_name datatype;

По умолчанию новый столбец вставляется в конец таблицы.
mysql> alter table people add country varchar(255);
Query OK, 4 rows affected (0.00 sec)
Records: 4  Duplicates: 0  Warnings: 0

mysql> select * from people;
+---+-------+----------+------------+---------+--------------+---------+
|id | Name  | LastName | addr       | telnumb | birthdaydate | country |
+---+-------+----------+------------+---------+--------------+---------+
| 1 | Vasia | Pupkin   | selo Slavne|     452 | 1922-10-23   | NULL    |
| 2 | Petia | Zatochkin| g.Zhitomir |      23 | 1995-04-12   | NULL    |
| 3 | Semen | Krivoy   | pgt. Pobeda|     231 | 1992-02-11   | NULL    |
| 4 | Masha | Zolotaya | selo Slavne| 5551232 | 1980-05-05   | NULL    |
+---+-------+----------+------------+---------+--------------+---------+
4 rows in set (0.00 sec)

mysql>

Если необходимо, чтобы столбец встал в начало таблицы,
нужно после параметров вставляемого столбца написать ключевое слово FIRST:
ALTER TABLE table_name ADD column_name datatype FIRST;

mysql> alter table people add country varchar(255) FIRST;
Query OK, 4 rows affected (0.01 sec)
Records: 4  Duplicates: 0  Warnings: 0

mysql> select * from people;
+---------+------+-------+-----------+-------------+---------+--------------+
| country | id   | Name  | LastName  | addr        | telnumb | birthdaydate |
+---------+------+-------+-----------+-------------+---------+--------------+
| NULL    |    1 | Vasia | Pupkin    | selo Slavne |     452 | 1922-10-23   |
| NULL    |    2 | Petia | Zatochkin | g.Zhitomir  |      23 | 1995-04-12   |
| NULL    |    3 | Semen | Krivoy    | pgt. Pobeda |     231 | 1992-02-11   |
| NULL    |    4 | Masha | Zolotaya  | selo Slavne | 5551232 | 1980-05-05   |
+---------+------+-------+-----------+-------------+---------+--------------+
4 rows in set (0.01 sec)

mysql>

Если необходимо, чтобы столбец был вставлен не в начале таблицы,
и не в конце, а после определенного столбца, то нужно применить
ключевое слово AFTER 'имя столбца', после которого будет установлен
новый столбец:
ALTER TABLE table_name ADD column_name datatype AFTER column_name2;

добавит колонку column_name следом за колонкой column_name2
mysql> alter table people add country varchar(255) after id;
Query OK, 4 rows affected (0.01 sec)
Records: 4  Duplicates: 0  Warnings: 0

mysql> select * from people;
+----+---------+-------+-----------+-------------+---------+--------------+
| id | country | Name  | LastName  | addr        | telnumb | birthdaydate |
+----+---------+-------+-----------+-------------+---------+--------------+
|  1 | NULL    | Vasia | Pupkin    | selo Slavne |     452 | 1922-10-23   |
|  2 | NULL    | Petia | Zatochkin | g.Zhitomir  |      23 | 1995-04-12   |
|  3 | NULL    | Semen | Krivoy    | pgt. Pobeda |     231 | 1992-02-11   |
|  4 | NULL    | Masha | Zolotaya  | selo Slavne | 5551232 | 1980-05-05   |
+----+---------+-------+-----------+-------------+---------+--------------+
4 rows in set (0.00 sec)

mysql>

Если нужно дописать к таблице не один, а несколько столбцов,
то для каждого столбца нужно ADD column_name datatype записать через запятую:
ALTER TABLE table_name ADD column_name datatype,
ADD column_name2 datatype, ADD column_name3 datatype;

mysql> alter table people add country varchar(255), add state varchar(255);
Query OK, 4 rows affected (0.01 sec)
Records: 4  Duplicates: 0  Warnings: 0

mysql> select * from people;
+---+-------+-----------+-------------+---------+-------------+--------+------+
|id | Name  | LastName  | addr        | telnumb |birthdaydate | country| state|
+---+-------+-----------+-------------+---------+-------------+--------+------+
| 1 | Vasia | Pupkin    | selo Slavne |     452 |1922-10-23   | NULL   | NULL |
| 2 | Petia | Zatochkin | g.Zhitomir  |      23 |1995-04-12   | NULL   | NULL |
| 3 | Semen | Krivoy    | pgt. Pobeda |     231 |1992-02-11   | NULL   | NULL |
| 4 | Masha | Zolotaya  | selo Slavne | 5551232 |1980-05-05   | NULL   | NULL |
+---+-------+-----------+-------------+---------+-------------+--------+------+
4 rows in set (0.00 sec)

CHANGE - Изменить параметр
синтаксис:
ALTER TABLE table_name CHANGE column_name_old column_name_new parametrs;

где
 table_name - имя таблицы, в которой находится изменяемый столбец;
 column_name_old - имя столбца изменяемого столбца;
 column_name_new - новое имя изменяемого столбца (должно равняться column_name_old,
 если мы не хотим поменять имя столбца);
 parametrs - новые параметры столбца.
mysql> alter table people CHANGE LastName Familia varchar(255);
Query OK, 0 rows affected (0.00 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> select * from people;
+------+-------+-----------+-------------+---------+--------------+
| id   | Name  | Familia   | addr        | telnumb | birthdaydate |
+------+-------+-----------+-------------+---------+--------------+
|    1 | Vasia | Pupkin    | selo Slavne |     452 | 1922-10-23   |
|    2 | Petia | Zatochkin | g.Zhitomir  |      23 | 1995-04-12   |
|    3 | Semen | Krivoy    | pgt. Pobeda |     231 | 1992-02-11   |
|    4 | Masha | Zolotaya  | selo Slavne | 5551232 | 1980-05-05   |
+------+-------+-----------+-------------+---------+--------------+
4 rows in set (0.01 sec)

mysql>

DROP- Для удаления колонки:
синтаксис:
ALTER TABLE table_name DROP column_name;

если необходимо удалить несколько колонок из таблицы - указываем все через
запятую.
Для того чтобы удалить 'индекс' необходимо поступить следующим образом:
ALTER TABLE table_name DROP INDEX index_name;

чтобы узнать имя индекса необходимо выполнить следующее:
SHOW KEYS from table_name;


DROP TABLE - удаляет табличку.
синтаксис:
DROP TABLE table_name;

CREATE INDEX
Индекс может быть создан для таблицы,это даст возможность
более быстро и эффективно работать.Пользователю индекс не
виден, он просто используется для ускорения поисков / запросов.
Примечание: Обновление таблицы с индексами занимает больше времени,
чем обновление таблицы без (поскольку индексы также нуждаются в обновлении).
Таким образом, индексы стоит создавать только на столбцы (таблицы),
по которым будет часто производиться поиск и запросы.
синтаксис:
CREATE INDEX index_name ON table_name (column_name,column_name2,..);

mysql> create index indx on people (Name);
Query OK, 4 rows affected (0.02 sec)
Records: 4  Duplicates: 0  Warnings: 0

до
mysql> show columns from people;
+--------------+--------------+------+-----+---------+-------+
| Field        | Type         | Null | Key | Default | Extra |
+--------------+--------------+------+-----+---------+-------+
| id           | int(11)      | YES  |     | NULL    |       |
| Name         | varchar(255) | YES  |     | NULL    |       |
| LastName     | varchar(255) | YES  |     | NULL    |       |
| addr         | varchar(255) | YES  |     | NULL    |       |
| telnumb      | int(11)      | YES  |     | NULL    |       |
| birthdaydate | date         | YES  |     | NULL    |       |
+--------------+--------------+------+-----+---------+-------+
6 rows in set (0.01 sec)

после
mysql> show columns from people;
+--------------+--------------+------+-----+---------+-------+
| Field        | Type         | Null | Key | Default | Extra |
+--------------+--------------+------+-----+---------+-------+
| id           | int(11)      | YES  |     | NULL    |       |
| Name         | varchar(255) | YES  | MUL | NULL    |       |
| LastName     | varchar(255) | YES  |     | NULL    |       |
| addr         | varchar(255) | YES  |     | NULL    |       |
| telnumb      | int(11)      | YES  |     | NULL    |       |
| birthdaydate | date         | YES  |     | NULL    |       |
+--------------+--------------+------+-----+---------+-------+
6 rows in set (0.01 sec)

также более конкретно(имена индексов) можно посмотреть так
SHOW KEYS from table_name;

Для создания уникального индекса по таблице. Повторяющиеся значения
не допускаются, необходимо:
CREATE UNIQUE INDEX index_name ON table_name (column_name);


Системные запросы(СЗ)DCL (Data Control Language)


SHOW - используеться для отображения информации о полях, таблицах в БД;
самым популярным являеться
SHOW DATABASES - просмотрет какие есть базы в MySQL сервере
SHOW TABLES - показать таблицы Бд
SHOW FIELDS(COLUMNS)  - показать информацию о том какие поля есть в таблице,
каких они типов, пример:
SHOW columns from people;

SHOW KEYS from table_name - вот так и переводиться -) отобразить ключи таблицы
SHOW PROCESSLIST; - показать процессы сервера MySQL.

Создание пользователей и назначение им прав


GRANT - Создание пользователей и назначение прав
синтаксис:
GRANT (ALL PRIVILEGES | (SELECT, INSERT, UPDATE, DELETE,
 REFERENCES (column list), USAGE))
 ON table TO user,... [WITH GRANT OPTION]
[IDENTIFIED BY [PASSWORD] 'password']] WITH w_options

GRANT OPTION =
 | MAX_QUERIES_PER_HOUR count
 | MAX_UPDATES_PER_HOUR count
 | MAX_CONNECTIONS_PER_HOUR count
 | MAX_USER_CONNECTIONS count
table = *.*
       db_name.tbl_name
user = 'name'@'hostname'
w_options
 | MAX_QUERIES_PER_HOUR count
 | MAX_UPDATES_PER_HOUR count
 | MAX_CONNECTIONS_PER_HOUR count
 | MAX_USER_CONNECTIONS count
пример: (создать пользователя web(подкл. только с localhost), назначить пароль webpass,
назначить доп опции на максимально возможное кол-во запросов, соединений...)
GRANT USAGE ON *.* TO 'web'@'localhost' IDENTIFIED BY 'webpass' 
WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 ;

пример: (дать все права на бд web_base, пользователю web. База должна существовать.)
GRANT ALL PRIVILEGES ON `web_base`.* TO 'web'@'localhost' WITH GRANT OPTION;

SET PASSWORD - Установка пароля
синтаксис:
SET PASSWORD FOR 'user'@'hostname' = password('newpass');

аналог
GRANT USAGE ON *.* TO user@host IDENTIFIED BY 'password';

DROP USER - Удаление пользователя
синтаксис:
DROP USER user [, user] ...

SHOW GRANTS - Показать права
SHOW GRANTS FOR 'root'@'localhost';

RENAME USER - Переименовать пользователя
синтаксис:
RENAME USER old_user TO new_user;

Функции


Несколько примеров по работе с функциями:
AVG() - возвращает среднее значение
SELECT AVG(id) FROM people;

COUNT() - считает что прикажешь
SELECT COUNT(column_name) FROM table_name;
SELECT COUNT(*) FROM table_name;

MAX() - возвращает максимальное значение
пример:
SELECT MAX(column_name) FROM table_name;

MIN() - возвращает минимальное значение
пример:
SELECT MIN(column_name) FROM table_name;

SUM() - функция суммирования
пример:
SELECT SUM(column_name) FROM table_name;

UCASE() - ковертирует символы в верхний регистр
пример:
SELECT UCASE(column_name) FROM table_name;

LCASE() - конвертирует символы в нижний регистр
пример:
SELECT LCASE(column_name) FROM table_name;


Типы данных которые используються в таблицах(data_type)


Целые числа
Тип
Описание
TINYINT Может хранить числа от -128 до 127
SMALLINT Диапазон от -32768 до 32767
MEDIUMINT Диапазон от -8388608 до 8388607
INT Диапазон от -2147483648 до 2147483647
BIGINT Диапазон от -9223372036854775808 до 9223372036854775807

Дробные числа
Тип
Описание
FLOAT Число с плавающей точкой небольшой точности
DOUBLE Число с плавающей точкой двойной точности
REAL Синоним для DOUBLE
DECIMAL Дробное число хранящееся в виде строки
NUMERIC Синоним для DECIMAL

Строки (символьные данные)
Тип
Описание
VARCHAR Может хранить не более 255 символов
TINYTEXT Может хранить не более 255 символов
TEXT Может хранить не более 65 535 символов
MEDIUMTEXT Может хранить не более 16 777 215 символов
LONGTEXT Может хранить не более 4 294 967 295 символов

Бинарные данные(учитываеться регистр символов)
Тип
Описание
TINYBLOB Может хранить не более 255 символов
BLOB Может хранить не более 65 535 символов
MEDIUMBLOB Может хранить не более 16 777 215 символов
LONGBLOB Может хранить не более 4 294 967 295 символов

Дата и время
Тип
Описание
DATE Дата в формате ГГГГ-ММ-ДД
TIME Время в формате ЧЧ:ММ:СС
DATETIME Дата и время в формате ГГГГ-ММ-ДД ЧЧ:ММ:СС
TIMESTAMP Дата и время в формате ГГГГММДДЧЧММСС

Дополнительные инструменты и возможности сервера MySQL


mysql - SQL шелл.Может работать как в интерактивном режиме, т.е.
дает возможность подключиться  к базе и посредством SQL команд и запросов
производить какие-либо действия с БД, так и не интерактивном тоесть вызвано исполнение кода из шелл-скрипта например.
пример:
mysql --user=user_name --password=your_password db_name

подключиться к указанной бд определеннім пользвоателем.
mysql --user=user_name --password=your_password db_name < db_structure.sql

таким образом можно восстанавливать БД по имеющемуся дампу БД.
mysql --user=user_name --password=your_password \
db_name--execute="sql commands"

может быть использвана в шелл-скриптах если необходимо производить какие-то запросы из скрипта.
myisamchk - тулза для работы с MyISAM таблицами. Может чекать, восстанавливать и оптимизировать таблицы.(Работает с файлами  .MYD и .MYI)
Перед использование желательно делать бэкапы.
пример:
myisamchk *.MYI

mysql_config - показывает опции с которыми был скомпилирован Mysql.
mysql_fix_privilege_tables - скрипт, который обновляет все таблицы с привилегиями.
mysql_install_db - скрипт который инсталит базы,таблицы которые нужны для работы MYSQL.
mysql_tzinfo_to_sql - загружает таблицы временных зон (time zones).
mysql_upgrade - запускаеться каждый раз при обновелнии сервера MySQL. Проверяет все таблицы во всех базах на совместимость с текущей версией.
Чтобы проверить и восстановить таблицы, и апгрейднуть системные таблицы mysql_upgrade
выполняет следующую команду:
mysqlcheck --check-upgrade --all-databases --auto-repair
mysql_fix_privilege_tables

mysql_waitpid - запуск с ожиданим программы чей pid и время её ожидания можно утсановить
mysql_waitpid [options] #pid #time

mysqladmin - тулза для администрирования MySQL сервера.
mysqladmin create db_name - создать новую БД с именем db_name
drop db_name - удалить базу
extended-status - расширенная информация о состоянии сервера
flush-hosts - очистить всю информацию о хостах в кэше
flush-logs - очистить все логи
flush-privileges - перезагрузить таблицы с привилегиями (тоже что и reload)
flush-status - очистить статус переменных
flush-tables - очистить все таблицы
password - устанавливает пароль для БД
shutdown - остановить сервер
Для случая когда сервер настроен с подчиненными серверами (репликация)
startslave - запустить репликацию на подчиненном сервере (slave)
stop-slave - остановить репликацию на подчиненом сервере (slave)
status - отображает краткую информацию о статусе сервера
variables - отобразить переменные сервера и их значения
threads - покажет кол-во активных клиентских трэдов (threads)
--host=host_name - (-h hostname )подключиться к MySQL на укзанный хост
--password=password (-p[password]) - указать пароль на подключение
--port=port_num (-P port_num) - указать порт подключения
--protocol={TCP|SOCKET|PIPE|MEMORY} - указывает протокол/метод с
помощью которого происходит подключение      
--socket=path (-S path) - подключение на файл-сокет
--ssl* - защищенное подключение, через ssl
--user=user_name, -u user_name - подключающейся пользователь
mysqlbinlog - инструмент для обработки бинарных логов MySQL'я
Сохранить все логи в файл
mysqlbinlog binlog.000001 >  /tmp/statements.sql

mysqlbug   - скрипт, баг-репортер
mysqlcheck - тулза "чекер" и восстановитель таблиц
--all-databases (-A) прочекать все таблицы во всех базах
--auto-repair - автоматически восттанавливать(чинить) таблицы
--optimize -o - оптимизировать таблицы
--repair (-r) - починить таблицы
mysqld_safe - скрипт запуска сервера(рекомендуемый)
mysqldump - инструмент для бэкапирования баз
mysqldump -u[username] -p[password] -h[host] db_name [tables] > backup.sql

--ignore-table=db_name.tbl_name - игнорить определенную таблицу при бэкапе.
--lock_tables (-l) лочить таблицы перед бєкапированием.
--xml, (-X) сохранить бэкап в формате xml
mysqlimport - прога для импорта данных, в различных форматах
mysqlshow - тулза для быстрого просмотра баз, таблиц, полей.

Выполнение SQL запросов из шелла и php


Парочка простых примеров:
Выполнение запросов из шела:
#!/bin/sh
/usr/local/bin/mysql --host=localhost --user=exim --password=exim \
                        --database=exim --execute="DELETE FROM \
                        \`sended_list\` WHERE \`last_mail_timestamp\` \
                        < (UNIX_TIMESTAMP() - 60*24*3600)"

#!/bin/sh
user="dbuser"
pass="dbpassword"
db="dbnme"
host="localhost"
mysql --host="$host" -u "$user" -p"$pass" "$db" <<EOF
  sql-statement-1;
  sql-statement-2;
EOF

#!/bin/sh
user="dbuser"
pass="dbpassword"
db="dbnme"
host="localhost"
sql="select * from tal_name"
mysql --host="$host" -u "$user" -p"$pass"  <<EOF
  use $db;
  $sql;
EOF

пример для PHP (создание БД):
<?php
$sql="CREATE DATABASE db_name";
mysql_query($sql);
?>

Документация (первоисточник):
http://dev.mysql.com/doc/
http://www.mysql.ru/docs/man/
Функции в MySQL



Ссылка на обсуждение: Incorrect URL.

размещено: 2008-10-13,
последнее обновление: 2010-01-29,
автор: Morty

оценить статью:

abigor, 2008-10-18 в 13:30:53

Уважаемый Morty, если вы пытаетесь сделать актуальной перевод документации с dev.mysql.com, то старайтесь избавится от жаргонных слов. Так будет намного лучше.

ymsssg, 2008-10-29 в 9:44:53

Спасибо автору за познавательную статью! Узнал много нового. Так держать!

Qaz, 2008-11-24 в 11:52:45

Огромное спасибо за статью!

EzheG, 2009-01-04 в 15:19:17

Статья понравилась.
Ачепятка nysql_fix_privilege_tables :)

nikll, 2009-11-19 в 9:42:41

Краткая и полезная компиляция информации по муслкую, для новичков самое оно к прочтению. Молодец, терь давай такую же по PGSQL :)

adre, 2009-12-06 в 10:49:52

До сих пор не втыкаю как полноценно пользовататься дополнительными индексами в таблице, если он не примари то практически всегда висит что элементов нет, может перекрестных запросов для извлечения нету? или еще чего =)))

SuperOleg, 2009-12-20 в 19:39:30

Большое спасибо автору, самое оно освежить память!

qui-gon-jinn, 2009-12-30 в 22:38:16

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

scompick, 2010-05-11 в 13:29:07

Спасибо таким людям как ты и в особенности Alex Keda за это замечательный сайт!

KoS, 2010-06-12 в 15:38:19

Огромное спасибо за данную информацию, и толковое изложение!

Ок, 2012-06-18 в 18:14:11

Круто спс кєп!


Оставьте свой комментарий:
Ваше имя:   *
e-mail:  
жирный
наклонный
подчёркнутый
ссылка
цвет
Нынешний год:   *
 


Хостинг HOST-FOOD

2014-07-27, lissyara
gmirror

Удалённое создание софтверного зеркала средствами gmirror, на диске разбитом с использованием gpart. Использование меток дисков для монтирования разделов.
2013-08-20, zentarim
Scan+Print server FreeBSD 9

Настройка сервера печати и сервера сканирования под управлением операционной системы FreebSD 9 для МФУ Canon PIXMA MP540
2011-11-20, BlackCat
Разъём на WiFi-карту

Делаем съёмной несъёмную антену на WiFi-карте путём установки ВЧ-разъёма
2011-09-14, manefesto
Настройка git+gitosis

Настройка системы контроля версия исходного кода в связке git+gitosis+ssh
2011-08-14, zentarim
Wi-FI роутер + DHCP + DNS

Настройка Wi-Fi роутера на Freebsd 8 + DNS сервер + DHCP сервер: чтобы Wi-Fi клиенты были в одной подсети с проводными, проводные и беспроводные клиенты получали адреса автоматически по DHCP, кэширующ
2011-06-15, -ZG-
Охранная система на FreeBSD+LPT

В этой статье описана попытка реализации простой охранной системы на базе FreeBSD с подключением к ней охранных устройтсв на LPT порт и видеорегистрацией.
2011-03-13, terminus
ng_nat

Описание работы ng_nat, практическое использование, достоинства и недостатки в сравнении с ipfw nat
2011-02-20, Капитан
Nagios+Digitemp

Статья описывает создание системы оповещения о превышении температуры в специальных помещениях на основе Nagios с использованием программы Digitemp.
2011-02-17, Le1
Zyxel Configuration

Скрипт для массового изменения конфига свичей Zyxel. Берет из файла iplist список ip-шек, заходит последовательно на каждый и выполняет комманды из файла commands, записывая происходящее в лог файл.
2011-02-16, fox
hast carp zfs ucarp cluster

HAST (Highly Available Storage), CARP, UCARP, ZFS, Cluster настройка и одаптация плюс личные размышления…
2011-02-04, BlackCat
Восстановление ZFS

История о том, как был восстановлен развалившийся RAIDZ ZFS-пул (перешедший в FAULTED) с помощью скотча и подручных средств. Или о том, какие приключения ожидают тех, кто не делает резервных копий.
2011-02-03, Капитан
1-Wire

Статья описывает самостоятельное изготовление контроллера DS9097 для съёма показаний с датчиков температуры DS1820 с помощью программы Digitemp.
2011-01-28, Капитан
Температура в серверной

Статья описывает построение системы наблюдения за температурой в помещении серверной с использованием программы Digitemp и выводом графиков в MRTG
2011-01-21, m4rkell
Syslog server

Как то буквально на днях, у нас завалилось, что то в еве) или не в еве не суть. Суть в том, что когда захотели снять логи с хостов esx обнаружили, что хранят эти негодяи логии только за последнии сутк
2011-01-07, lissyara
Canon/gphotofs

Монтирование цифровых фотоаппаратов Canon (PTP) как файловой системы, автоматизация этого процесса через события devd и внешние скрипты.
2010-12-13, Al
IPSec

Описание принципов работы IPSEC и способов аутентификации.
2010-12-07, manefesto
FreeBSD on flash

Было принято решении переехать на USB Flash и установить минимальный джентельменский набор для работы своего роутера. Делаем =)
2010-12-05, Fomalhaut
root ZFS, GPT

Инструкция по установке FreeBSD с использованием в качестве таблицы разделов GPT и в качестве основной файловой системы - ZFS
2010-09-05, Cancer
Настройка аудиоплеера на ximp3

Цели: Простенький аудиоплеер, для того что бы тетя продавец в магазине утром пришла нажала на кнопку Power и заиграла в зале музыка, так же был доступ по сети, общая шара куда можно заливать музыку, к
2010-08-31, Cancer
Установка и настройка OpenVPN

На днях появилась задача - объединить головной офис и 3 филиала в одну сеть через интернет посредством OpenVPN, чтобы люди могли подключаться через RDP к базам 1С на серверах.
2010-08-25, manefesto
freebsd lvm

Использование linux_lvm для работы с LVM разделами из-под FreeBSD. Проблемы которые возники при монтирование lvm раздела
2010-04-30, gonzo111
proftpd file auth&quota

Proftpd - квоты и авторизация из файлов, без использования базы данных и/или системных пользователей
2010-04-22, lissyara
tw_cli

Пошаговая инструкция по восстановлению RAID на контроллере 3ware, из которого выпал один диск. Настройка мониторинга состояния рейда и отчётов о его состоянии на email.
2010-04-14, fox
MySQL Master+Master

MySQL (Master Master) and (Master Slave) Как настроить репликацию…
2010-03-22, Mufanu
named 9.7.0

Система доменных имен (Domain Name Service, DNS) - одна из тех незаметных, закулисных программ, которым не уделяется и половины того внимания, которого они заслуживают.
2010-03-09, terminus
DNS zones

Краткий ликбез про управление DNS зонами. Примеры проведения делегирования прямых и обратных DNS зон.
2010-03-09, aspera
Squid+AD (group access)

Настройка прокси сервера SQUID с автроризацией пользователей в AD. Разделение пользователей на группы
2010-03-02, BlackCat
Шлюз: Часть 4

Настройка дополнительных сервисов: синхронизация времени (OpenNTPD), клиент DynDNS.org.
2010-03-01, BlackCat
Шлюз: Часть 3

Настройка DHCP и DNS серверов для работы внутри частной сети, c поддержкой внутренних (частных зон) DNS, а так же интеграция DHCP и DNS сервисов.
2010-03-01, BlackCat
Шлюз: Часть 2

Конфигурация МСЭ pf для проброса портов с изменением порта назначения и без, а так же поддержки активного режима FTP и ограничения максимального размера сегмента
2010-03-01, BlackCat
Шлюз: Часть 1

Быстрая настройка шлюза/маршрутизатора с установлением PPPoE-соединения, поддержкой NAT и DNS-forwarding.
2010-02-23, Morty
darkstat

Простая считалка траффика, со встроенным веб-сервером. Очень маленькая, может делать отчеты трафика по хостам, портам, протоколам, а также строить графики
2010-01-23, gonzo111
squid+sams+sqstat

Пилим squid и sams - примеры конфигов с объяснениями. Установка SqStat.
2009-12-19, schizoid
mpd5 + radius + ng_car + Abills

Настройка pppoe-сервера с биллинговой системой Abills и шейпером ng_car
2009-11-16, lissyara
UFS->ZFS

Удалённая миграция с UFS на ZFS. Загрузка с раздела zfs. Настройка для работы с малым количеством памяти под архитектурой i386.
2009-11-13, gx_ua
fusefs-ntfs

Установка, настройка и использование fusefs-ntfs, драйвер NTFS, предназанченного для монтирования NTFS разделов под FreeBSD
2009-11-12, Morty
LiveCD

Создание собственного LiveCD с необходимыми вам изменениями, автоматизирование данного процесса, а так же вариант скоростной сборки СД.
2009-09-27, lissyara
Samba как PDC

Контроллер домена - аналог M$ NT4 домена под самбой, без использования LDAP и прочей хиромантии. Просто и быстро =)
2009-08-30, terminus
ipfw nat

Подробное руководство по ipfw nat, сложные случаи конфигурации.
2009-08-24, levantuev
HotSpot

Установка Hotspot системы в общественное заведение.
2009-08-18, lissyara
diskless

Создание бездисковых терминалов под управлением FreeBSD - с загрузкой по сети. Используются для старта rdesktop и подключения к виндовому серверу терминалов.
2009-07-29, BAV_Lug
Видеонаблюдение

Настройка бюджетного варианта видеонаблюдения на удаленном объекте
2009-07-22, Cancer
OpenLDAP адресная книга

Настройка и создание адресной книги на базе OpenLDAP + phpLDAPadmin
2009-06-30, SergeySL
AimSniff

Руководство по созданию системы мониторинга ICQ-переписки на базе AimSniff, использующей базу данных MySQL для хранения и Web-интерфейс WAS (Web Aim Sniff) для просмотра перехваченных сообщений
2009-06-25, atrium
Управление правами доступа

Полномочия пользователей и файлов, принадлежащих им, формирует концепцию ОС UNIX.
2009-06-16, DNK
Exim+PgSQL

Установка почтовой системы exim+pgsql на FreeBSD 7.1
2009-05-30, mvalery
HDD(mbr) -> HDD(gpt)

Как разбить диск размером более 2TB на разделы, сделать загрузочным, а затем перенести на него информацию с рабочей системы — донора.
2009-05-22, Cancer
SendXMPP

Отправка сообщений на Джаббер сервер по средствам SendXMPP
2009-05-11, Raven2000
Network UPS Tools

Network UPS Tools представляет собой набор программ, которые обеспечивают общий интерфейс для мониторинга и администрирование UPS оборудования.
2009-04-29, m0ps
IPSEC over GRE with RIP

Пример IPSEC over GRE и динамическим роутингом (RIP), с ADSL в качестве последней мили на оборудовании Cisco.
2009-04-24, WhiteBear777
qemu network

Появилась необходимость поставить на БСД эмулятор(qemu) и настроить в качестве гостевой ОС Windows XP, предоставив ей выход в локалку и в сеть internet...
2009-04-22, vp
freebsd + huawei 162 gsm modem

В статье описывается простой способ подключения модема huawei 162 к freebsd + первичная настройка smstools
2009-04-12, mvalery
Мониторинг RAID

Мониторинг из командной строки RAID компаний AMCC 3ware, HighPoint, Dell (Perc 5/i и PERC 6/i) и LSI (MegaRAID SAS 8408E и SAS1078)
2009-04-09, texnotronic
RAID1 via LAN

Функциональности DRBD во FreeBSD можно добиться примонтировав блочное устройство по сети при помощи GEOM Gate (ggate) и добавив его в зеркало с локальным диском средствами gmirror.
2009-04-03, Raven2000
Оптимизация хоста для CMS

В последнее время на старый и не очень быстрый ПК (Celeron 800 RAM 256) мною было навешано с десяток сайтов и некоторые были из серии тяжелых CMS. И так нам дано FreeBSD 7.1 и ~10 сайтов/CMS.
2009-04-01, atrium
VSFTPD + AD && MySQL

Настройка самого безопасного сервера FTP - vsftpd.
2009-03-31, Dron
Peoplenet + C-motech (3G)

Описание подключения к сети Peoplenet посредством 3G модема С-motech CCu-650U на FreeBSD
2009-03-25, lissyara
mod_auth_external

mod_auth_external - авторизация пользователей в apache c помощью внешней программы - например, системных пользователей.
2009-03-24, gx_ua
Lightsquid

Частично lightsquid может заменить sams: быстрая и простая инсталляция, быстрый парсер, cgi скрипт для динамической генерации отчета, нет привязки к БД, различные графические отчеты, мультиязычный инт
2009-03-18, LHC
Установка Zabbix-1.6

Установка и первоначальная настройка системы мониторинга Zabbix (версия 1.6)
2009-03-16, Cancer
Принт-Сервер Samba+LPD & AD

Простейшая настройка Принт-Сервера на FreeBSD используя Samba+LPD & AD
2009-03-04, Mad_caterpillar
ipsec_vpnc

Настройка VPN IPSec концентратора на FreeBSD 6.2 для клиента cisco с использованием ipsec-tools и авторизацией в активной директории
2009-02-18, Andy
Free-SA

Программа анализирует log файлы Squid'а и формирует по ним отчет.
2009-02-02, Cancer
Openfire Jabber Server

Установка Jabber сервера на примере Openfire
2009-01-28, Cancer
mpd5 + сжатие и шифрование

Установка VPN сервера mpd5 + сжатие и шифрование
2009-01-26, vp
freebsd + webcamera

Подключение и настройка вебмкамеры для работы с freebsd на примере Logitech QCam STX
2009-01-10, Grishun_U_S
конфиг для офисов

В статье разбирается конфиг для офиса, пользователи которого имеют строгие ограничения по портам. Заворачиваем www трафик на транспарентный прокси, а остальное NAT'им. Эффективно делим канал интернет
2008-12-27, Storoge
sftp+chroot

Возникла необходимость дать возможность нескольким пользователям заливать на сервер контент для своих сайтов через sftp, чтобы при этом не страдала безопасность.
2008-12-13, Morty
PurefFTPd

Администрирование pureftpd-сервера с помощью вэб интерфейса Usermanager
2008-12-11, lissyara
termlog

Небольшая простая утилита, использующаяся для записи в файл всего что происходит на терминалах системы. Полезно, когда есть доступ по ssh у тех, кому не очень доверяете. Паранойя - это не плохо =)
2008-11-26, Cancer
SQUID+SAMS +Rejik-(ADLDAP)

Установка Прокси сервера SQUID с красивой мордой SAMS и редиректором REJIK,для учета кто куда ходил + графики в pdf,РЕЖИК собственно рубит банеры и запрещает пользователям ходить на запрещенные сайты,
2008-11-22, dvg_lab
php5-oci8

Решение проблем segmentation fault (core dumped) при работе с oracle8-client и php5-oci8
2008-11-21, m0ps
NTP

Пример настройки NTP сервера для локальной сети и клиента, для синхронизации времени с локальный NTP сервером. Обновление ntpd из портов.
2008-11-20, Cancer
SQUID+SAMS +Rejik-(NTLM)

Установка Прокси сервера SQUID с аутентификацией по NTL с красивой мордой SAMS и редиректором REJIK,для учета кто куда ходил + графики в pdf, РЕЖИК собственно рубит банеры и запрещает пользователям хо
2008-11-20, UA
Hotspot

Настройка безпроводной точки доступа (WiFi) на freebsd
2008-11-12, Shaman
Enemy Territory

Появилась у меня такое желание поднять сервер Enemy Territory. Поискал погуглил, ничего толкового не нашел пришлось все самому делать. И вот решил поделиться опытом. Начинаем......
2008-11-11, lissyara
Samba+ NT ACL

Использование vfs самбы - модули full_audit и recycle. Настройка для использования в качестве файлопомойки с 500+ одновременно работающих юзеров. Раздача прав через нативный виндовый интерфейс.
2008-11-11, Raven2000
Upgrading OpenBSD

Сегодня мы будем обновлять OpenBSD. Систему необходимо поддерживать в актуальном виде и следить, чтобы все работало, как часы и все дырки были залатаны до прихода врага =)
2008-11-10, lexy
SMSTools 3

Как автоматизировать отправку и обработку входящих сообщений при помощи мобильного телефона, датакабеля и компа
2008-11-06, Cancer
Asterisk IP PBX

Установка VoiP сервера Asterisk IP PBX для соединения двух шлюзов и АТС
2008-10-30, atrium
Samba & CUPS & AD & ACL

Настройка Samba в роли доменного файл-сервера, и CUPS в роли принт-сервера для Windows клиентов
2008-10-17, Raven2000
src & ports

Конечно, в OpenBSD система портов никогда не сможет быть полной сравнение с той же системой во FreeBSD. Связано это с тем, что разработчики включают в порты лишь те приложение которые протестированн
2008-10-13, Morty
Mysql - базовое описание

Базовое описание и принципы работы с MySQL
2008-10-10, Cancer
exim&dovecot + fetchmail + SSL

Exim & Dovecot + Postfixadmin & Roundcube + Fetchmail & smtp_relay С возможностью отправлять письма через смтп релей провайдера. С использование SSL шифрование: POP3s IMAPs sSMTP
2008-10-09, m0ps
Дополнительные порты для роутера

Увеличение количества Ethernet портов маршрутизатора за счет свободных портов коммутатора пробросив vlan с сабинтерфейса роутера на интерфейс коммутатора.
2008-10-06, princeps
Bacula

Настройка сервера системы резервного копирования Bacula на FreeBSD для бэкапов FreeBSD и Windows машин
2008-10-02, zheromo
Postfix + DBMail

Создание почтовой системы на основе Postfix + DBMail + SASL2 + TLS + DSpam + ClamAV + RoundCubeWebMail
2008-10-02, Cancer
SugarForge CRM

SugarForge CRM предоставляет подавляющее большинство функциональных возможностей CRM систем
2008-09-12, arksu
ng_ipacct + squid

Подсчет трафика с помощью ng_ipacct. Связка ng_ipacct + squid + парсер логов + авторизатор + nginx + mysql и куча служебных скриптов для работы всей системы.
2008-09-03, Raven2000
GLPI

Мне надо было найти замену существующей программы инвентаризации, чтобы за компьютерами, принтерами, картриджами, лицензиями и тп был учет. Желательно с дополнительными бонусами типа системы подачи...
2008-09-03, salimk
POWERDNS

Статья о том как мигрировать с DNS сетвера ISC Bind на POWERDNS
2008-09-03, DNK
Rinetd

Редирект TCP портов с помощью утилиты rinetd - просто до безобразия - само прилодение простое, конфиг в одну строчку - что ещё надо для счастья? =)
2008-09-03, L!Ner
eGroupWare

Это сервер групповой работы. Он укомплектован собственным веб-интерфейсом, который обеспечивает доступ к вашим данным с любой платформы по всей планете.
2008-08-30, jafff
MAC адрес

У девайса VoIP Planet VIP-000 слетел MAC адрес и стал FF-FF-FF-FF-FF-FF, как я его востанавливал
2008-08-30, Morty
clonehdd

Перенесение, бэкапирование HDD,легко и просто
2008-07-31, Raven2000
Proxy Auto Configuration

Возникла необходимость автоматически настраивать прокси для всех компов и не бегать например если поменялось что-то на сервере прокси. Для этого давно существует технология Proxy Auto Configuration.
2008-07-29, f0s
NNTP сервер

Конфигурирование собственного NNTP-сервера.
2008-07-28, Al
spamooborona

настройка yandex spamooborona в качестве smtp-proxy для работы с exim
2008-07-28, Cancer
SQUID+SAMS +Rejik-(NCSA)

Установка Прокси сервера SQUID с красивой мордой SAMS и редиректором REJIK,для учета кто куда ходил + графики в pdf,РЕЖИК собственно рубит банеры и запрещает пользователям ходить на запрещенные сайты,
2008-07-20, Raven2000
Pax

Эта замечательная утилита поставляется с FreeBSD по умолчанию, и она имеет неплохой потенциал. Можно создавать архивы модифицировать их, а так же живьем переносить всю операционную систему с данными
2008-07-16, Andy2k
BIND & AD

Настройка BIND для обслуживания запросов контроллеров Active Directory. Альтернатива поднятию DNS от Microsoft.
2008-07-16, aleksey.kravchenko
Samba (PDC+BDC)

Поднять главный (офис) и резервный (филиал) контроллер домена на базе Samba и OpenLDAP, организовать синхронизацию и репликацию между ними. Запись в LDAP должена выполняться только на PDC.
2008-07-14, aleksey.kravchenko
OpenVPN + LDAP

Статья о том, как настроить OpenVPN с авторизацией пользователей в OpenLDAP.
2008-07-14, aleksey.kravchenko
ProFTPd + LDAP

ProFTPd с авторизацией пользователей в OpenLDAP
2008-07-13, lissyara
Asus Eee PC

Дали на несколько дней поиграться Asus Eee PC - мелкий ноутбок по смешной цене. Ну, первым делом ставим правильный ОС и смотрим - что из этого получиться.
2008-07-09, terminus
DNS сервер Unbound

Установка и настройка кеширующего DNS сервера Unbound под управлением FreeBSD 7.0
2008-07-08, f0s
mozilla autoconfig

Автонастройка браузера и почты Mozilla Seamonkey пользователям
2008-07-05, lissyara
iftop

Утилита предназначена для мониторинга загрузки канала в режиме реального времени - позволяет видеть кто именно занял полосу. Полезно для организаций с FreeBSD на шлюзовой машине.
2008-07-02, manefesto
snd_hda

Патчим snd_hda для корректной работы с наушниками
подписка

    вверх      
Статистика сайта
Сейчас на сайте находится: 21 чел.
За последние 30 мин было: 54 человек
За сегодня было
4295 показов,
540 уникальных IP
 

  Этот информационный блок появился по той простой причине, что многие считают нормальным, брать чужую информацию не уведомляя автора (что не так страшно), и не оставляя линк на оригинал и автора — что более существенно. Я не против распространения информации — только за. Только условие простое — извольте подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой, незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
  Если соизволите поставить автора в известность — то вообще почёт вам и уважение.

© lissyara 2006-10-24 08:47 MSK

Время генерации страницы 0.3101 секунд
Из них PHP: 79%; SQL: 21%; Число SQL-запросов: 77 шт.
Исходный размер: 307820; Сжатая: 44923