����������������� ������


�������������� ������� � ����� ������

���� MySQL ���������� ����������� ���� ������ ��� �������������� ���� ������� � ����� ����� ������. ��� ����� ����� ������������ �� ������ �������� �/��� ������������� � ��������������� ��� ����� ��� ���������� ��� ������

���������������� �������� ����� ���� �������� ��������. ��� ��������� � ���� ������, ������ ���������. ������� �� �� ����� ���� ���������� � ����������� ����������� (��� ������ ������ ����...).

���� MySQL ����� ��� �������, � ������:

���� ������: mysql �������: db
�������Null�������������Extra
����char(60) PRI
Dbchar(32)PRI
������������char(16) PRI
Select_privchar(1) N
Insert_privchar(1) N
Update_privchar(1) N
Delete_privchar(1) N
Create_privchar(1) N
Drop_privchar(1) N
���� ������: mysql �������: host
�������Null�������������Extra
����char(60) PRI
Dbchar(32)PRI
Select_privchar(1) N
Insert_privchar(1) N
Update_privchar(1) N
Delete_privchar(1) N
Create_privchar(1) N
Drop_privchar(1) N
���� ������: mysql �������: user
�������NullKey���������Extra
����char(60) PRI
������������char(16) PRI
������char(8)
Select_privchar(1) N
Insert_privchar(1) N
Update_privchar(1) N
Delete_privchar(1) N
Create_privchar(1) N
Drop_privchar(1) N
Reload_privchar(1) N
Shutdown_privchar(1) N
Process_privchar(1) N
File_privchar(1) N

������ ���������� ����� �������������:

$ mysql mysql

mysql> INSERT INTO user VALUES ('%','monty',password('something'),
    -> 'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
mysql> INSERT INTO user (host,user,password) values('localhost','dummy','');
mysql> INSERT INTO user VALUES ('%','admin','','N','N','N','N','N','N','Y','N','Y','N');
mysql> quit

$ mysqladmin reload

��������� ��� ����� ������������ (������):
monty: ����������������� (�������������), ������ ������������ ������, ��� ������ � mysql.
dummy: ������ ���� ������� � �������������� ���� ������ �� ������� 'db '.
admin: �� ��������� � ������, �� ��������� ���������� ������ ������ 'mysqladmin reload' and 'mysqladmin processlist'. ����� ���� ������� � �������������� ���� ������ ����� ������� 'db'.

��������! �� ������ ������������ ������� password() ��� �������� ������������, �������� ������. ���� MySQL ������� �������� ������������� ������.

��������, ������������� � ������� ������������� ����������� ��������, ������������� � ������� DB. ���� ������ ������������ ����� ��� ������, ����� ��������� ������������� ��� ���� ������� � ������� ������������� � ��������� �� ����� ������� � ���� ������ �� ������� db.

���� �� ����������� MIT threads package, �������� ��������, ��� ��� localhost �� ����� ��������, ��� ��� MIT threads package �� ������������ socket-�����������. ��� ��������, ��� �� ������ ������ ���������� ��� hostname (��� �������) ��� �����������, ���� ���� �� ��������� � ����� � ��� �� ��������.

������� ������� ��������� ������� ��� ��������� ���� �������:

������������ ����������� �� ������ �������� � �������������.
db ����������� �� ������ ��������, ������������� � ��� ������.
������ ����������� �� ������ �������� � ��� ������.

������� � ������ 3.20.19 ������� ������� ��� ���� ��������, ��� ������� ���������, ��� ������ ������������ ��������� � ������ ���� ������. �������� ������������� ������������ � ������ ���, ������� ��������������� ���:

INSERT INTO user VALUES('%.external.domain.com','','','N','N','N', 'N','N','N','N','N','N','N');

�������� ������� ��� ������ ����� ��������� ��� ������������ '' (������ ���), � �� ��� ������������ ���, ���� ���� ������������, ��� ����� ������ � ������� ������� � ����� ������ (db �������).

�������� ���������������� ��������� - ��������, �������� �������� ������ ���� MySQL, (��������, ���� ������� �� ���� � ��� ����), ��� ��� �� �����������, ���� ����������� ��������� �����, ����� �� ���� ����������� � �������� ������� ��������� ���������� ���������. ������������� ��������� mysqlaccess ������ ���������� �������� ��������� ����� �����.

������ ����� �������� ������������� ���������� ��������� SQL � ����� ����� �������. ��� �������� �������.

���������, ���������� ��� ���� "��� �������" � '%' � �������� ������� ��������. ��� ������ ��� ������ ��������� ���������������, ����� �������� ������������ � ����������� ���� �������� � ������� �������� � ������ ����� �������������.

���� �������� ��������� �� ������ 'Access denied', �� ������ ����� �� ��������� ��������� � ������� mysqld, �� ������ ������������ ���������� � ����� ������� �������������.

��� �������� ������

������������� ������ ����������� � ������� ������������� ('user ').

������ mysqld (��� �������� �������)

Solaris

���������� ������ mysql.server �� �������� mysql bin � /etc/init.d .

��������� ��� ���� � ������� mysql.server. ��������� � ���������� safe_mysqld � /etc/init.d/mysql.server � � /etc/rc2.d/S99mysql.server .

Linux

� Caldera Open Linux ���� �������� � ���� /etc/rc.d/rc.local ���������:

/usr/local/bin/safe_mysql &

�������, ����� ���� ������ ���������� ���� � ������� � MySQL.

������ mysqld (��� ���������� �������)

��������� mysqld ����� ���� �������� �� ����� ������ ������������. �� ��������� ��� ����������� �� ����� root. ���� ��� ����������� �� ����� ������ ������� ������������, ���� ���������� ���������� ����� ������� �� ���� ����������� ������.

������� � ������� ��� ������������-�������� MySQL � ����� ��������� ������� (��������������, ��� ����������� ������ mysql ��������� � ����� ����. ���� ��� �� ���, ������� ������ ����):

safe_mysql &


�����, ���������� ��� ���������� ������

��� � ������� ����� �������� ��� unix, MySQL ������������ � ���� ��������� ������, ������� ���� ���������������. ����� ����������� ����� ���������� ��������� ��������� ������ �� ������ ��������� ������.

���������� �������������� ���������������� �������

���� �� �� ������, ����� ������������ ����� ��������� ����� -u ��� ����� � mysql ��� ������ �������, ����� ���������������� � ����� global.h ������:

#define SAFE_USER 1  /* Comment this if you are paranoid */

���������� ��������������� ������������ �������� �� ���������

�� ��������� MySQL ������������� �������� �������� �� ��������� �����, ������� ���� �� ���������. MySQL ����� ������ ��� ������ �� ���� ����������� ����. ���� �� ��������� ��, ����� ���� � �������������� ���������� ����� �������� NULL, �� �������� � ���� global.h ������:

#define DONT_USE_DEFAULT_FIELDS

��������� ������������ ����� �����

�� ��������� MySQL ������������� ������ 1120 ������ �����. �� ������ ����������� ��� ��������, ���������� ���� nisam.h � ������� �������� N_MAX_KEY_LENGTH. �������� ��������, ��� ��� ����� ����� � �������� ������������������. ��� ������� ������ ��� �������� ������, ��������� ����� ���������� ����, ����� �������� ������ ���������� ����. ����� �������� ��� ����������� � ������� "�����".

��������� ������� ����������

�� ��������� MySQL ��������� ������ �������� ISO8859-1 (latin1). �� ������ �������� ��� �� ����� ������������, ��������� ��������� �����.

  --with-charset=[charset]
��� [charset] ����� ���� ���� ��: latin1, latin2, koi8_ru, dec8, dos, hp8, swe7, usa7.

����� ������ � ���, ��� ��������� ����� ������ ��������, ���������� ������� ����� � ����������.

�������� ��������: ���� �� ������� ������ �������� ��� ������ ���� ������, �� ������ ������ ��������� isamchk � ����������� -e, � -q ��� ���� ������, ����� MySQL �� ����� �������� ���������.

���������� ������� � MySQL

���� �� ��������� C++, � Yacc, �� ������������ ������ �������� ������� � ���� MySQL. ���� �� ���������, �� ���� ����.

������� �������� ������ � ���� sql_lex.cc � ������ ������� � ������ sql_functions.

����� �������� ��� ������ � ���� sql_yacc.y. ������ ���������� ������ ������������� yacc. �� ������ �������� ��� � ������ �����. ����� ���������� ��������� �������, � �������� 'item' � ����� �����������.

� ����� item_func.h ��������� �����, ������� ����������� �� Item_num_func ��� Item_str_func, � ����������� �� ����, ���������� �� ���� ������� ����� ��� ������.

� intem_func.cc ��������:

double *Item_func_newname::val()

���� �� ����������� �������� �������, ���

String *Item_func_newname::Str(String *str)

���� �� ����������� ��������� �������.

��� ��������� ������� �� ������ ����� ���������� ��������� �������:

void Item_func_newname::fix_length_and_dec()

��� ������ �� ������� ���� ��������� 'max_length' ���������� �� ���������� ����������. max_length - ������������ ����� ��������, ������� ������� ����� ������� (������������ ����� ������������� ��������).

���� ������� �� ����� ���������� null, �� ������ ����� ���������� 'maybe_null=0'.

��� ��������� ������� �������� 'String *str', ������������� ����� ��� �������� ����������. ��������� ������� ������ ������� ������, ������� ������ ���������.

��� ��������� ������� ������ �������� ��������� ������ ������, ��� �� ��������� ����������! ��������� ������� �� ����������...


������� �������� ������

����� ������� ������ ��������� ������ � MySQL - ������� LOAD DATA INFILE. ��� � 3-20 ��� �������, ��� ������������� ���������� INSERT. ��� ��� �������� ���������� �������������� �� ������ ������������ ��������� ���������, ����� ��������� ������������ ����� �� ����� �������, � �� ����� ��� ������ �����������. ��� ����� ���� ���������� � ����� MySQL �������� ��� ������, ��� ������������ ������ ���� � ����� ���� ������.

isamchk -rq -k0 [���_����_������]/[���_�������] �������� ������
LOAD DATA INFILE ... ������ ����� ������
isamchk -rq [���_����_������]/[���_�������] �������� ������ ������� ������
mysqladmin reload. ��������, ����� mysql ����������� ����� �������


��������� mysqld

����� �� ���������� ����� -O, �������� (��� �������������� ����������) �� �������� ������ ���� ���������� � �� ������� ��������. ��� ����� ��������� �������� ���:
$ mysqld -O

��������� ���������� � ����� -O:
����������� �� ���������
back_log ���������� ������ ������� ��� �������� tcp/ip �����������. ���������, ��� ���������� ��� ��������, ����� �� �������� ������� ���������� ����������� � �������� ������� �������. ��������� �� ����� ����� ������������ �������� ���� ���������� 128 ��� 256. ����������� �� ���� ������� ����� ���������� �� man-�������� listen(2).
keybuffer ������ ���-������, ��� �������� ���� ������� �������������� ������. ������� ����� ���� ����� ������ �������������. � �������������� -Sl ����������� ������ ���� �����.
max_allowed_packet ����� ����������� ������� ����� ���� ������� �� ����� ��������, ���� ������������ ���� ������� �������. ��������� ����� = 'net_buffer_length'. �� ������ ����������� ���������� ���� �����.
net_buffer_length ��������� ������ ������ �����������. �� ������ ����������� ���������� ���� �����.
max_connections ������������ ����� �����������, ������� mysqld ����� ����� ��������� � ���� � �� �� �����.
table_cache ������������ ����� ������ ����������� ��������� �� �������. ������� �������� ���������, ��� ��������� ������� � ����� ������������ ��������. ������, ������ �������� ������� ������� ����� ������.
recordbuffer ������ ���-������ ��� �������� ����������� �������. �� ������ ����������� ���������� ���� �����.
sortbuffer ������ ������, ������������� ��� ����������. �� ������ ����������� ���������� ���� �����.
max_sort_length ������������ ����� ��� ����������?

�������� ���������

���� �� ������ ���������� ���������, ������� ������� �������� ���������� �������, ��� �������� ������� �������� ��������� �������� recordbuffer � sortbuffer �������� �� 32K. �� ������ ���� ��������� recordbuffer �� 8�� ��� ������ �������. ����� ���� ����� ������������� ���������� �������� ���������� keybuffer �� ������� � 512��. ��� �������� ������� ����� ������, � ������� ������������� ������.


��������� �������� �� ��������� ������������������

����� ����, ��� �� ��������� ������ � ���� ���� ������, �� ������ ��������� ������� 'isamchk -a' ��� ������ ���������. ��������� isamchk ������� ���������� �� ����� ��������, ������� ������ ������������ �����������. ������, ���� ��������� isamchk ������ ������� �� �������. ��� ���� ��������������, ��� ��� ������ � ������� �� ����� isamchk ��������� � �������� ������������� ��� ����� �������.


����������� ��������

����� ����������� ����������� ��� ������� WHERE?


����������� ������, ������������ ���������

���� ��������� �����, ������� �� ������ �������, ����� �������������� ���������� �����, ������� ���������� ���� �������. ������ ����� ����������� �� ������ ��������� ������ ���, ����� ��������. ��� ������� �������, � �������� 1 ��� �� ����.

�� ������ ��������� ����� �����, ��������� ������� ������������� ����������. ��������, MEDIUMINT ����� ������ ����������.

������ �� ������ ������� ����� ��������� ��� ������, � ������� �� ������ ���������, ���� ���� �������� � �������.

������ � ����, ��� ���� ������������� ����� � mysql �������������� ����������� �������. ������� ����� ���������� ����� (VARCHAR, BLOBs), ����� �������� ������������� �� 10-200%.


�������������� ����� � INSERT

� ��������� ����� ���������� INSERT ���� ������ ������ ��� ������� ������� ��������� (NULL) � �� ������ �������.

��� ������������� INSERT ��� �������, ������� ����� �������������� �� ����� �������, ����������� ���������:

�� ����� ����� ������� � �������� 'warnings information' ������������ ������ ��� ������������� 'ALTER TABLE' ��� 'LOAD DATA FROM...'.


� ��� ������� ����� ������ MySQL

������ MySQL ���������� �� ��������� �����:

111.222.333

111 ���� ������ ����� ����������, ��� ��������, ��� ���� ������� ��������� ���������. ��� ����� �������� ��������� ����� �������� ������, ����� ���������, � �.�. ������ ������ ������� ��������� ����������� ����� ���������� �������� ����� ����������� ����� ����������. �� ������� ���� ��� �������� ��������� ���� � ������������� ���� �������.
222 ������������ ����� ���/�������������� �����������. ����� �������� ������ � ��������� ���������� SQL ��� ���������� ������������. ��� �� �������� ������ ������� ��������� � ����� ���������� ����������, �� ��������� ��������� �� ����� �����������.
333 ��������� ���������� ���������, ������� �� ������ ��������� ���-������ � ������ �� �����. ����� ������� �������� ����� - ���������� �������� ���� SQL, ������� ��������� � ������������ � ������������� ������� �������. ���� �� ��������� ������������ �������� ����� ��������� SQL-92 ��� ����� ���� ������ (��� ������-�� � ����...), ��� ������ ���� ������.

������� ���� - ������ ��������� ���� NEWS, ����� �� ���������� ����� ������. ��� ������ ���� ���, ������������� � ���, ��� ������ ����������, ������� � ����� ��������� �����������.


�������� ������/������

�� ������ ������ ������� ��������� �������� ��������� "������-������", ������������� ������� MySQL ��� ����� ����� �������� � �������� ���� ������.

�����������

< = ������
> = ������
[] 1 ����
[2: ] 2 ����� (������ ���� ������)
[3: ] 3 ����� (������ ���� ������)
[4: ] 4 ����� (������ ���� ������)
[string: ] ������, ����������� �����.
[length: ] ����� ������ �����. ��������� Net_store_length()
           ��� �����! ���� � ���, ����� �������� ����� ��������
           ������ ������ � 1 ����, �� ��������� � ����� �������
           ������ (� NULL).

��������� ��������

������ ������������ ����� ����� ��������� �������:

[3: ����� ������] [����� ������] ������

��� ������ ������ ����������� [0] ����� ������� ��������� ������, ����� �������� ������� ��������� ����� ������.

������ ������� ���������� � 0 � ������������� ��� ������� ����������/����������� ������.

���� �������

:connect

> [protocol version] [string: password crypt seed]

< [2: 0] [3: max_allowed_client_packet_length] [string: user name]

[string: scrambled password]

> ok packet

���������� � ����� password.c �� ���������� MySQL ����� ����� ������������ ��� ���������� �������. ������ ������ ���� ������, ���� ������������ �� ����� �������� ������.

:ok

[0] [length: affected_rows] [length: unique id]

:error

����� ��������� � ����� �����.

> [255] [string: error message]

:command

< [command number]

enum enum_server_command{SLEEP,QUIT,INIT_DB,QUERY,FIELD_LIST, CREATE_DB,DROP_DB,RELOAD,SHUTDOWN,STATISTICS, PROCESS_INFO,CONNECT}

:query

< [QUERY command] [string: query string] (The end null is not sent)

> [0] [length: affected rows] [length: insert id] (Insert, delete...)

���:

> [length: column_count] (a query result)

> column field data packets

> row data packets

:data

: ������ ���������� ���� �� ������ �����, ������� ������� ������ �� ���������� ������� [254]. �������������: ����� ������� ������, ������� ���������� � ������� 254! ������ ����� ���� 'data' ����� ���� 'column count'.

������ ������� ����:

[:length] == NULL_LENGTH -> NULL field

���:

[:length] [length data] (������ �� ������������ �� \0!)

����� ������ ������� ������� �� 5 �������� �� ���������� �������:

[:string table name]
[:string column name]
[:3 create length of column (may be larger in a few cases)]
[:1 type (as of enum_field_types)]
[:1 flag] [:1 decimals] (2 �����!)

��� ������������� ������� list_fields ������� ������ �������:
[:string default]

���������� � ������ libmysql.c, net.c � password.c ����� ��������� ���������� � �������� �������.


�������� � ��������

��� ��������� �������� ������� ����������� ������� (�� ������ ������� � �������, ������� �������� �������, ���������� � ������� �� ������� ��������. ������ ��� ����� $DATADIR/[dbname], ��� dbname - ��� ���� ������, ������� �������� �������.):

prompt> isamchk -d table_name

ISAM file:     table_name
Data records:               215  Deleted blocks:              0
Recordlength:                85
Record format: Packed

table description:
Key Start Len Index   Type
1   37    14  unique  text packed stripped
2   1     30  multip. text packed stripped
3   51    4   multip. long
4   31    2   multip. short
    33    2           short
    35    2           short
��� ����� ��������� �������� � ������� ����������:
prompt> isamchk -d -v table_name

ISAM file:     Customer
Isam-version:  2
Creation time: 1996-12-17 21:40:04
Data records:                 0  Deleted blocks:              0
Datafile: Parts:              0  Deleted data:                0
Datafilepointer (bytes):      4  Keyfile pointer (bytes):     3
Recordlength:               374
Record format: Packed

table description:
Key Start Len Index   Type                       Root  Blocksize    Rec/key
1   2     2   unique  short                        -1       1024          1
2   4     80  multip. text packed stripped         -1       1024          1
3   2     2   multip. short                        -1       1024          1

���������� ����������� ����������:

ISAM file ��� ISAM-�����.
Isam-version ������ ISAM �������. ������ ������ 2.
Creation time ����� ���� ������ ��� ������?
Recover time ����� � ��������� ��� ��� ������������ ���� �������/������?
Data records ������� �������/�����.
Deleted blocks ������� ��������� ������ ��� ��� �������� �����? ��. ������� � ������� �� isamchk ��� ���������� ������������ ���������� �� ��������������� �����.
Datafile: Parts ��� ������������ ������ ��� ����������, ������� ������ ������ � ���. ��� ���������������� ������� ��� ����� ��� ����� �� ��, ��� � Data records.
Deleted data ������� ����� ���� �������� ��������� ������.
Datafilepointer ������� ������ �������� ��������� ����� ������? ��� 2, 3 ��� 4 �����. ����������� ������ ��������� 2 �������, �� ��� �� ����� ����������� �� MySQL. ��� ������������� ������ ��� ����� ������. ��� ������������ ������ ��� ����� �����.
Keyfile pointer ������� ������ �������� ��������� ����� ������? ��� ������ 1, 2 ��� 3 �����. ����������� ������ ��������� 2 �������, �� ��� ����������� mysql �������������. ��� ������ ����� �����.
Max datafile length ������� ���� ����� ������������ ��� ���� ������� ���� ������ (.ISD).
Max keyfile length ������� ���� ����� ������������ ��� ���� ������� ���� ������.
Recordlength ������� ������� �������� ������ ������/������?
Record format ����� ������ ����� ������ ������/������?
table description ������ ���� ������ � �������. ��� ������� ����� ��������� ������� ���������� ������� ������ (������� ���������� ���������� � ��������� �������).

������� ���������� ������� ������ ��� ������� �����:

Key ����� �����.
Start ��� � ������/������ ���������� ��������� �����.
Len ����� ����� ��������� �����? ��� ����������� ����� ��� ������ ������ ����� ����. ��� ����� ��� ����� ���� ������ ������ ����� (���� MySQL ��� �� �� ������������ ����� �������).
Index unique ��� multip.
Type ����� ��� ������ ����� ��� ��������� �����? ��� - C ��� ������ (����������� packed ��� short).
Root ����� ����� ���������� �����.
Blocksize ������ ������� ���������� �����. �� ��������� 1024, �� ��� ����� ���� �������� �� ����� ����������.
Rec/key �������������� ��������, ������������ �������������. ��� ��������, ������� ������� ���������� �� ���� �����. ���������� ���� ������ ����� �������� 1. ��� ����� ���������� ����� ����, ��� ������� ��������� � ���������������, ��������� isamchk -a . �� ��������� 30.

MySQL FAQ ����� �������� ���������� �� ���� ����.


����� � ��� � ���.

���� ������ ��������� ���������� ������� ������ ������������ ����, ��� ����� �������� � ������������ � MySQL.

������� ������ ����� ��� B-tree ����� 1024 � � ���� ������ (�� ����������� root) - �� ������� ���� 2/3 �� �������. ��� ��������� �������������� (id = 4 �����) ��� �������� 1024/(4+4)*2/3=85 ������ � ������������ � �������, � ����� ������� ����� �������� ������� �������� ������ � 5 �����������������.

���� �� �������, ����� ���� ������� B-tree ���� 100% �������, ��������� isamchk � ������ -rq ��� ������ ������� �������.

������ ������ ����� ����� ����� ���� ��������� �����. ���� ��� ����� ����� ��� �� ����� �������, ������ ����� ����� ����� �������� 1 ����. ��� ��������� ����� ������� 4 �������� ����� ��������� ��������� �������.

���� ���� �������������� �������, �� nisam ���������� �������� ����� � ������ �����, ����� ������������ ���������������� �����.

��� ����� ������ ��������/������� ����� key_buffer (�� ��������� 1M) ��� ��� ���� root ������������ ������.

������ ���������� ��������������, ��� ��� ���������� �� ������ ����������������� � ����� ������ ������ ��� ������ �� ������ ������. ��� ���� ����� ������� �������������, ����� �� ������ ������ ������ ������� � ��� �� ����� ������.


MySQL: ����� �� �������

���� ���������� ����� �� ����������� �������� � ����������������� ������ MySQL � ��� ������� �������.

��������� ���������� ������� � ����������� �������� ������ ������ ������� ���� � �������������� ����� �������������� ������������, � ������� ��� ��������� ��� ���������� ����������� �� ������������� MySQL.

����� �������� ��� views, rollback � triggers ����� ��������� �� �����-�� ����� �����������. ��� ������� ������������� ����������� ������.

���������� � ������� �����������, ��������, ����� ��������� � ������ 3.21.0


������ � Linux

����� MySQL ������� �� Linux ������� � ���������� ������ Linux, �� ������ ������ ������� ��� ��������. ����������, ��� ������. ����� ������� ���� ����� ��� Linux Threads manager, ����, ����� ������������ ����������� � ����, ����� ���������� �������.

� ���������� ������� ��������� ���, ���� ��� ����������� ��� ��������� ��� ����������� ���������� ����� ����������, ������� ������������� ������. ��� ������� ��� ����� ���������� ����, �������� ����� ����������� ���� ���-�� �� ���� ������.

��������� ����������.

�� ������� ���������.

© 2000 Alexey Pautov rldp@ftp.botik.ru.
Information Club of the developers PHP