Как запустить mysql
Перейти к содержимому

Как запустить mysql

  • автор:

Как запустить mysql

При взаимодействии клиента и сервера MySQL, используется соедине-ние TCP/IP, поэтому перед установкой необходимо установить протокол TCP/IP если система не использует сетевые соединения сети.

Для запуска MySQL-сервера в системах Windows 95/98/ME необходимо выполнить файл mysqld.exe. Сервер запускается как безоконный фоновый процесс. При этом он остается в памяти и обрабатывает запросы от клиентских приложений.

Для остановки сервера следует выполнить команду

mysqladmin -u root shutdown

Если сервер не был остановлен корректно, при последующем запуске в файле mysql.err будет добавлена запись о некорректном завершении. Корректная остановка сервера необходима для сохранения всех данных, которые находятся в КЭШах MySQL.

Сервер MySQL для Windows NT/2000/XP/2003 Server обычно устанавливается как сервис, но также предусмотрена возможность запуска сервера MySQL без установки сервиса. Для того, чтобы установить MySQL как сервис, необходимо выполнить команду

mysqld-nt -install

При этом появляется возможность управления сервером как из командной строки с помощью команд:

NET START mysql

NET STOP mysql, так и с помощью визуальных средств управления серверами

Так же как и в Windows 95/98/ME, при запуске MySQL используются установки, описанные в файлах my.ini, my.cnf.

Предусмотрена возможность удаления сервиса, для этого следует выполнить команду

mysqld-nt -remove

При отсутствии необходимости установки MySQL в качестве сервиса операционной системы сервер MySQL можно запускать следующим образом:

Mysqld-nt -standalone

После установки серверной части MySQL для обеспечения безопасности данных необходимо указать пароль администратора MySQL и установить парольный доступ клиентов к базам данных.

Управление сервером MySQL в Windows 2000/XP/2003 Server

Необходимо заметить, что для удобного администрирования пакета MySQL в нем существует графическая утилита WinMySQLadmin, которая позволяет изменять конфигурационный файл my.ini, запускать и останавливать сервер, просматривать информацию о сервере, об активных соединениях, производить некоторые операции с базами данных (например, создание и удаление), просматривать таблицы баз (именование столбцов и тип данных), просматривать файл ошибок и создавать отчеты

Окно утилиты WinMySQLadmin

Утилита автоматически помещает значок в область уведомлений панели задач и «сигнализирует» символом светофора о состоянии сервера MySQL: запущен он или остановлен.

Как запустить mysql

Установка MySQL проходит довольно просто.Для начала нужно скачать и распаковать исходники (как это делать я думаю писать не стоит).Найти их можно на сайте MySQL в разделе Downloads-на любой вкус и для любой ОС,так как MySQL работает практически на всех платформах.

Если вы работаете на Unix-платформе(в частности я буду приводить примеры для Linux,которые немногим отличаются для других Unix-платформ),нужно выполнить следующие шаги:

 shell> gunzip mysql-VERSION-OS.tar.gz | tar xvf - shell> ln -s mysql-VERSION-OS mysql shell> cd mysql shell> scripts/mysql_install_db shell> bin/safe_mysqld & 

Распаковывать исходники нужно в каталог /usr/local,так как в настроечных скриптах указывается именно эта директория и создать симлинк для каталога mysql-это делается,потому что в тех же скриптах указывается этот каталог.Нужно подредактировать скрипты mysql_install_db и safe_mysqld применительно к вашей системе,для того,чтобы они начали работать,в частности исправить путь для указания местоположения mysqld и баз данных. Для запуска демона mysqld нужно перейти в каталог /usr/local/mysql/bin и запустить скрипт safe_mysql в фоновом режиме.Если вы не получили никаких сообщений,это уже хорошо-значит,все прошло успешно.Если же появилось сообщение об ошибке,значит что-то не в порядке со скриптами.Можно настроить запуск сервера mysql во время загрузки компьютера.Для этого нужно поместить запуск safe_mysql в один из файлов инициализации системы(они разные в зависимости от версии Linux). Для Linux Slakware в файл /etc/rc.d/rc.local нужно добавить:

Что касается Windows,поклонником которого я являюсь,то здесь установка проходит практически без проблем.Распаковываете zip-архив,запускаете exe-файл,а дальше все работает само.Устанавливается обычно в каталог c:mysql. В Windows NT MySQL устанавливается в виде службы и можно указать способ запуска-ручной или автоматический (Start-Settings-Control Panel-Services-MySQL-Startup).

Запуск MySQL.

Управление сервером обычно осуществляется из командной строки.Насчет Linux я уже писал,а в Windows 95/98 откройте сеанс DOS и выполните следующие команды:

 cd mysqlbin mysqlbin>mysqld --standalone

Эта команда запустит демон mysql в фоновом режиме.В Windows 95/98 не предусмотрен запуск mysqld в виде службы.Отсутствие сообщений при этом -хороший знак,значит все в порядке.

При запуске mysqld можно указывать следующие опции:

Теперь можно попытаться войти в сервер.Для этого используется команда mysql.Изначально существует единственный пользователь,которому предоставляется право входа- root ,которая не имеет пароля.Первое,что нужно сделать-войти под именем root и установить для него пароль. Команда mysql может использовать следующие опции:

Примечание. Команды mysqld и mysql имеют еще некоторые опции,но в данный момент они особого интереса не представляют.

 mysqlbin>mysql -u root mysql Welcome to the MySQL monitor.Commands end with ; or g. Your MySQL connection id is 1 to server version: 3.23.19 Type 'help' for help. mysql>

Если вы это получили,значит вы успешно вошли в базу данных mysql,которая используется для администрирования сервера.В ней содержатся 5 таблиц,называемых таблицами привилегий.Система привилегий будет подробно рассмотрена в следующих разделах,а пока выполните следующее:

 mysql> UPDATE user SET Password=PASSWORD('new_password') WHERE user='root'; mysql>quit mysqlbin>mysqladmin -u root reload

После установки пароля для root нужно перезагрузить сервер командой mysqladmin reload,чтобы изменения вступили в силу.После этого можно попробовать войти снова:

 mysqlbinmysql -u root -p mysql Enter password:******* 

Система привилегий и безопасность в MySQL.

База данных mysql и таблицы привилегий.

Итак,вы успешно вошли в базу данных mysql,которая используется для администрирования сервера.Что же здесь находится?А находятся здесь 5 таблиц,которые ничем не отличаются от других таблий баз данных,за исключением того,что эти таблицы используются для предоставления доступа к базам данных и таблицам в них пользователям.Рассмотрим каждую из них.

Введите следующую команду,которая покажет таблицы в базе данных mysql:

 mysql>show tables;

    User
    Определяет,разрешено ли пользователю,пытающемуся подключиться к серверу делать это.Содержит имя пользователя,пароль а также привилегии.Если ввести команду show columns from user; ,то получим следующее:

FieldTypeNullKeyDefaultExtra Hostchar(60)PRI Userchar(16)PRI Passwordchar(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

Изначально эта таблица содержит пользователя root с паролем,который вы установили и именем хоста ‘%’.По умолчанию root может входить с любого хоста,имеет все привилегии и доступ ко всем базам данных.Также в таблице содержится запись для пользователя ‘%’,которую нужно сразу же удалить,так как она предоставляет доступ любому пользователю.

 delete from user where user='%'; 

Для добавления нового пользователя выполните следующие действия:

 insert into user (host,user,password) values ('%.domain.com','john',password('df456'); insert into user (host,user,password) values ('localhost,'mary',password('kitchen'); select host,user,password from user; 

HostUserPassword%root456g879k34df9%.domain.comjohn657t234d980hg6localhostmary234d76gh88rt9

Пояснения:

1.Команда insert вставляет данные в таблицу,не забывайте завершать команды ‘;’.
2.При вводе пароля используйте функцию password(),иначе пароль работать не будет!
3.Все пароли шифруются mysql,поэтому в поле Password вы видите абракадаьры.Это делается в целях безопасности.
4.Не есть хорошей практикой назначать привилегии пользователям в таблице user,так как в этом случае они являются глобальными и распространяются на все базы данных.Предоставляйте привилегии каждому пользователю к конкретной базе данных в таблице db,которая будет рассмотрена далее.
5.При задании имени хоста для входа через сеть рекомендуется явно указывать полное имя хоста,а не ‘%’.В приведенном выше примере юзеру john разрешается вход на сервер со всех машин домена domain.com.Можно также указывать IP-адреса машин и маски подсетей для большей безопасности.

FieldTypeNullDefaultExtra Hostchar(60)PRI Dbchar(32)PRI Userchar(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

По умолчанию,все привилегии установлены в ‘N’.Например,предоставим юзеру john доступ к базе данных library и дадим ему привилегии select,insert и update(описание основных команд mysql будет дано в отдельном разделе,сейчас моя цель-показать,как работают таблицы привилегий).

 insert into db (host,user,db,select_priv,insert_priv,update_priv) values ('%.domain.com','john','library','Y','Y','Y');

Привилегии,устанавливаемые в таблице db,распространяются только на базу данных library.Если же установить эти привилегии в таблице user,то они будут распространяться и на другие базы данных,даже если доступ к ним и не установлен явно.

Таблица host используется для расширения диапазона доступа в таблице db.К примеру,если доступ к какой-либо базе данных должен быть предоставлен более чем одному хосту,тогда следует оставить пустой колонку host в таблице db,и внести в таблицу host необходимые имена хостов. Выполним команду show columns from host;

Как видно из таблицы,здесь также можно задавать привилегии для доступа к базе данных.Они обычно редко используются без необходимости.Все привилегии доступа нужно задавать в таблице db для каждого пользователя,а в таблице host только перечислить имена хостов.Сервер читает все таблицы,проверяет имя пользователя,пароль,имя хоста,имя базы данных,привилегии.Если в таблице db привилегии select,insert установлены в ‘Y’,а в таблице host в ‘N’,то в итоге юзер все равно получит ‘Y’.Чтобы не вносить путаницы,лучше назначать привилегии в таблице db.

Эти 3 таблицы являются основными.В новых версиях MySQL,начиная с 3.22 добавлены еще 2 таблицы- tables_priv и columns_priv,которые позволяют задать права доступа к определенной таблице в базе данных и даже к определенной колонке.Они работают подобно таблице db,только ссылаются на таблицы и колонки. Также,начиная с версии 3.22 можно использовать команду GRANT для предоставления доступа к базам данных,таблицам и колонкам таблиц,что избавляет от необходимости вручную модифицировать таблицы db,tables_priv и columns_priv.Команда GRANT будет подробно рассмотрена в следующих разделах.

Привилегии,предоставляемые MySQL.

Привилегия Колонка Где используется
select Select_priv таблицы
insert Insert_priv таблицы
update Update_priv таблицы
delete Delete_priv таблицы
index Index_priv таблицы
alter Alter_priv таблицы
create Create_priv БД,таблицы,индексы
drop Drop_priv БД или таблицы
grant Grant_priv БД или таблицы
references References_priv БД или таблицы
reload Reload_priv администрирование сервера
shutdown Shutdown_priv администрирование сервера
process Process_priv администрирование сервера
file File_priv доступ к файлам на сервере

Select -используется для извлечения информации из таблиц.Select можно также использовать не имея разрешения на доступ к какой-либо БД,например,как калькулятор.

 mysql>select fname,lname,address from customers where city='New York'; 

Insert -используется для вставки информации в таблицу.Например:

 mysql>insert into data2 (first_col,third_col,sixth_col) values ('Bob','Smith','bob@fdrt.net');

Update -позволяет обновлять информацию в таблицах.Например:

 mysql>update numbers set field3='129867' where field5='567483'; 

Delete -используется для удаления информации из таблиц.

 mysql>delete from indexes where u_id='2201';

Alter -используется для модификации таблиц:переименования таблицы,добавления колонок,изменения колонок,удаления колонок.Примеры:

 mysql>alter table wind rename newwind; mysql>alter table newwind add master_con varchar(20); mysql>alter table newwind change retail wholesale varchar(60); mysql>alter table newwind drop field021; 

Create -позволяет создавать базы данных и таблицы в них.Примеры:

 mysql>mysqladmin -u john -ptest create mydb //Создает пустую БД. mysql>use mydb; Database changed. create table monitoring ( id int(5) not null auto_increment, first_name varchar(15) not null, last_name varchar(20) not null, address varchar(80) not null, primary key (id), key(last_name)); 

Drop -ипользуется для удаления таблиц и баз данных.

Grant -позволяет пользователю предоставлять другим пользователям привилегии,которыми он сам обладает.Два пользователя с различными привилегиями и привилегий GRANT могут комбинировать свои разрешения.

Index -позволяет пользователю создавать и удалять индексы.

File -пользователь,обладающий этим правом,может выполнять команды LOAD DATA INFILE и SELECT. INTO OUTFILE и может читать и записывать любой файл на сервере MySQL.

Последние 3 привилегии используются для администрирования сервера из команды mysqladmin .

Специальные пользователи MySQL.

В MySQL существуют 3 специальных пользователя: monty,admin и dummy.

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

 mysql>mysql -u root -p mysql Enter password:****** mysql> INSERT INTO user VALUES('localhost','monty',PASSWORD('password'), 'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y'); mysql> INSERT INTO user VALUES('%','monty',PASSWORD('password'), 'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y'); или mysql> GRANT ALL PRIVILEGES ON *.* TO monty@localhost IDENTIFIED BY 'password' WITH GRANT OPTION; mysql> GRANT ALL PRIVILEGES ON *.* TO monty@"%" IDENTIFIED BY 'password' WITH GRANT OPTION;

Следует заметить,что следует внести данные как для localhost,так и для ‘%’,то есть любого хоста в сети.

Пользователь,который может входить на сервер с локального хоста без пароля и которому назначаются административные привилегии Reload и Process .Пользователь admin может использовать команды mysqladmin reload, mysqladmin refresh и mysqladmin flush-* ,а также mysqladmin processlist .

 mysql>mysql -u root -p mysql Enter password:****** mysql> INSERT INTO user SET Host='localhost',User='admin', Reload_priv='Y', Process_priv='Y'; или mysql> GRANT RELOAD,PROCESS ON *.* TO admin@localhost;

Доступа к базам данных admin не имеет.Привилегии для доступа к определенным БД должны быть назначены индивидуально-или в таблице db,или командой GRANT.

 mysql>mysql -u root -p mysql Enter password:****** mysql> INSERT INTO user (Host,User,Password) VALUES('localhost','dummy',''); или mysql> GRANT USAGE ON *.* TO dummy@localhost;

Создание и модификация баз данных и таблиц в MySQL.

  • Создание баз данных
  • Типы данных в MySQL
  • Создание и модификация таблиц
    • Команда LOAD DATA INFILE
    • Команды модификации таблиц

    Создание баз данных.

    Создание базы данных в MySQL производится с помощью утилиты mysqladmin .Изначально существует только БД mysql для администратора и БД test,в которую может войти любой пользователь и которая по умолчанию пуста.Приведенный ниже пример иллюстрирует создание базы данных.

     mysqlbin>mysqladmin -u root -p create data1 Enter password:****** Database "data1" created. mysqlbin>

    По умолчанию,root имеет доступ ко всем базам данных и таблицам.Перейти в созданную базу данных можно,используя команду mysql .

     mysqlbin>mysql -u root -p data1 Enter password:****** Welcome to MySQL monitor.

    Или,находясь в другой базе данных,например в mysql ввести команду:

     mysql>use data1 Database changed.

    Теперь можно создавать таблицы и вводить информацию.

    Типы данных в MySQL.

    Прежде чем создавать таблицы,необходимо ознакомиться с тем,какие типы данных поддерживает MySQL.Все они представлены в нижеследующей таблице:

    Cоздадим таблицу customers в БД data1:

     mysql>use data1 Database changed. mysql>create table customers ( emp_id int(4) not null auto_increment, emp_name varchar(10) not null, emp_lname varchar(15) not null, address varchar(60) not null, phone int(10), primary key(emp_id)); 

    Мы создали пустую таблицу.Вводить данные в нее можно несколькими способами:
    а)вручную,используя команду insert into ;
    б)загрузить данные из текстового файла,что является более предпочтительным,особенно если нужно ввести несколько тысяч записей.Синтаксис этой команды будет описан позже.
    в)использовать утилиту mysqlimport также для загрузки данных из текстового файла.

    Пример ввода данных вручную:

     mysql>insert into customers (emp_id,emp_name,emp_lname,address,phone) -->values ('1001','John','Walker','New York','1236458794'); или mysql>insert into customers values ('1001','John','Walker','New York','1236458794'); //работает и то,и то. 

    Что касается auto_increment в столбце emp_id ,это означает,что числовое значение этого столбца будет автоматически увеличиваться на единицу с каждой новой записью.То есть,если мы ввели значение 1001,то следующее будет 1002 и т.д.Значение в такой столбец вводится один раз для задания точки отсчета,а дальше сервер будет сам подставлять нужные значения.

    Синтаксис команды LOAD DATA INFILE.

    DATA [LOW_PRIORITY] [LOCAL] INFILE 'file_name.txt' [REPLACE | IGNORE] INTO TABLE tbl_name [FIELDS [TERMINATED BY 't'] [OPTIONALLY] ENCLOSED BY ''] [ESCAPED BY '' ]] [LINES TERMINATED BY 'n'] [IGNORE number LINES] [(col_name. )]

    Предположим,существует некоторый текстовый файл 123.txt,содержащий 2000 записей,которые нужно внести в таблицу.Нужно создать таблицу,имеющую такую же структуру и такое же число полей,как и файл(а также подходящие типы данных).Предположим,что поля в файле разделены запятыми.Кроме того,файл должен находиться в нужной базе данных. Вводим следующую команду:

    LOAD DATA INFILE ‘123.txt’ into table customers fields terminated by ‘,’;

    Это все.Данные из файла помещаются в таблицу.

    Для модификации таблиц и данных в них используются команды update и alter table . Рассмотрим их действие на примере таблицы customers:

    Пример действия команды alter table :

     mysql>alter table customers add last_accessed date; mysql>insert into customers (last_accessed) values ('20000512') where -->emp_id='1003'; mysql>alter table customers rename customers buyers; mysql>alter table buyers change phone telephone int(11); 

    После выполнения этих команд таблица примет следующий вид:

    Можете проверить это сами 🙂

    Изменение данных в таблицах производится с помощью команды update .Для примера возьмем ту же таблицу buyers.

     mysql>update buyers set address='Seattle' where emp_lname='Smith'; 

    Для модификации таблиц используются также команды Drop и Delete .

    Delete -удаляет строку из таблицы.Например,если ввести команду
    delete from buyers where emp_id=’1002′

    будет удалена строка для Bill Smith.

    Drop -если используется в Alter table удаляет колонку из таблицы.

    Команда Drop также используется для удаления таблиц и баз данных.Пользоваться ею следует осторожно,так как любое удаление необратимо,восстановить данные можно только из резервной копии.

    Общие проблемы и их разрешение.

    Наиболее распространенной проблемой является сообщение Access denied for user. Если это рядовой пользователь,то с этим может разобраться администратор,если же такое сообщение получает администратор,то это уже проблема. Очень часто при установке пароля для root администратор забывает использовать функцию password() ,а просто вводит:

    update user set password='mamamia' where user='root';

    После этого при попытке войти в базу данных он получает сообщение Access denied.Такой пароль не будет прочитан.Правильно нужно ввести:

    update user set password=password('mamamia') where user='root';

    Это очень важный шаг и необходимо быть внимательным.Единственный выход при этом в Windows-деинсталлировать сервер и установить по новой,благо еще ничего не настроено.

    Если такую проблему испытывает пользователь,вероятно причина в неправильной настройке таблиц привилегий,в первую очередь та же установка пароля,или записи в таблицах db и host неверны.Рассмотрим это на простом примере:

    Очень важный нюанс:в таблице User для jerry указано разрешение Select,которое является глобальным,то есть справедливо для любой базы данных,даже если он не имеет туда доступа.Например,если jerry введет команду:

    select * from data2.authors;

    он получит доступ к этой таблице,хотя в таблице Db не назначен доступ к базе data2.Поэтому,без особой необходимости не нужно предоставлять пользователям привилегии в таблице User,а делать это в таблице Db для каждой конкретной базы данных.

    Предположим,что jerry временно работает в другом отделе,который находится в другом домене,и когда он пытается получить доступ к базе данных,он получает Access denied,поскольку компьютерам этого домена не разрешен доступ к базе данных.В данном случае нужно поступить следующим образом:очистить поле Host в таблице Db,а в таблицу Host занести следующие данные:

    update db set host='' where user='jerry';
    insert into host (host,db) values ('%.domain.com','data1');
    insert into host (host,db) values ('monster.domain2.com','data1');

    Привилегии в таблице Host указывать не нужно.Главное,чтобы данные в таблицах привилегий нигде не дублировались,чтобы не возникало противоречий.Данные для пользователя-имя и пароль,должны назначаться в таблице User,привилегии-в таблице Db,хосты,с которых разрешен доступ,в таблице Host.Если все внимательно вводить,проблем возникать не должно.

    В MySQL версий 3.22 и выше работает очень хорошая команда GRANT,с помощью которой можно предоставлять пользователям доступ к базам данных и таблицам без модификации таблиц привилегий вручную.

    GRANT select,insert update,delete on data1.telephone to jerry@%.domain.com identified by 'password';

    С помощью этой команды можно указывать привилегии на доступ даже к определенным столбцам таблицы:

    GRANT select(id,name,address,phone),update(address,phone) on data2.customers to jerry@%.domain.com identified by 'password';

    Применение этой команды автоматически помещает данные в таблицы Db,Tables_priv и Column_priv,что избавляет от необходимости их ручной модификации.

    Если нужно отнять у пользователя какую-либо привилегию,используйте команду REVOKE.

    REVOKE update(address,phone) on data2.customers from jerry@%.domain.com;

    Запросы к базе данных и команда Select.

    Я не ставлю целью углубляться в изучение языка SQL,об этом вы можете прочитать в любом руководстве по SQL Server,MySQL в основном поддерживает все основные команды стандарта ANSI 92,но команда Select заслуживает того,чтобы посвятить ей отдельную главу. Команда Select используется для запросов к базе данных с целью извлечения из нее информации.Синтаксис команды следующий:

    SELECT [STRAIGHT_JOIN] [DISTINCT | ALL] select_expression. [FROM tables. [WHERE where_definition] [GROUP BY column. ] [ORDER BY column [ASC | DESC], . ] HAVING full_where_definition [LIMIT [offset,] rows] [PROCEDURE procedure_name]] [INTO OUTFILE 'file_name'. ]

    Как видно из вышеприведенного,вместе с командой Select используются ключевые слова,использование которых очень влияет на ответ сервера.Рассмотрим каждое из них.

    Пропускает строки,в которых все выбранные поля идентичны,то есть устраняет дублирование данных.

    Предложение команды Select,которое позволяет устанавливать предикаты,условие которых может быть верным или неверным для любой строки таблицы.Извлекаются только те строки,для которых такое утверждение верно.Например:

    SELECT u_id,lname from publishers WHERE city ='New York';

    Выводит колонки u_id и lname из таблицы publishers для которых значение в столбце city-New York.Это дает возможность сделать запрос более конкретным.

    Реляционный оператор — математический символ который указывает на определенный тип сравнения между двумя значениями. Реляционные операторы которыми располагает MySQL :

    = Равнo > Больше < Меньше >= Больше или равно Не равно

    Эти операторы имеют стандартные значения для числовых значений.

    Предположим что вы хотите увидеть всех заказчиков с оценкой(rating) выше 200. Так как 200 — это скалярное значение, как и значение в столбце оценки, для их сравнения вы можете использовать реляционный оператор.

    SELECT * FROM Customers WHERE rating > 200;

    Основные Булевы операторы также распознаются в MySQL. Выражения Буля — являются или верными или неверными, подобно предикатам. Булевы операторы связывают одно или более верных/неверных значений и производят единственное верное или неверное значение. Стандартными операторами Буля распознаваемыми в SQL являются:AND,OR и NOT.

    Предположим вы хотите видеть всех заказчиков в Далласе,которые имеют рейтинг выше 200:

    SELECT * FROM Customers WHERE city = 'Dallas' AND rating > 200;

    При использовании оператора AND,должны быть выполнены оба условия,то есть должны быть выбраны все заказчики из Далласа,рейтинг которых больше 200.

    При использовании оператора OR,должно выполниться одно из условий.Например:

    SELECT * FROM Customers WHERE city = 'Dallas ' OR rating > 200;

    В данном случае будут выбраны все заказчики из Далласа и все имеющие рейтинг больше 200,даже если они и не из Далласа.

    NOT может использоваться для инвертирования значений Буля.Пример запроса с NOT:

    SELECT * FROM Customers WHERE city = 'Dallas' OR NOT rating > 200;

    При таком запросе будут выбраны все заказчики из Далласа и все заказчики,рейтинг которых меньше 200.В этом запросе оператор NOT применяется только к выражению rating >200.Можно сделать более сложный запрос:

    SELECT * FROM Customers WHERE NOT( city = 'Dallas' OR rating > 200 );

    В этом запросе NOT применен к обеим выражениям в скобках.В данном случае,сервер читает выражения в скобках,определяет, соответствует ли истине равенство city = ‘Dallas’ или равенство rating > 200.Если любое условие верно, выражение Буля внутри круглых скобок верно. Однако, если выражение Буля внутри круглых скобок верно,предикат как единое целое неверен, потому что NOT преобразует верно в неверно и наоборот.То есть,будут выбраны все заказчики не находящиеся в Далласе и рейтинг которых меньше 200.

    Оператор IN определяет набор значений в которое данное значение может или не может быть включено.Например,запрос

    SELECT * FROM Salespeople WHERE city = 'Barcelona' OR city = 'London';

    может быть переписан более просто:

    SELECT * FROM Salespeople WHERE city IN ( 'Barcelona', 'London' );

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

    Оператор BETWEEN похож на оператор IN. В отличии от определения по номерам из набора, как это делает IN, BETWEEN определяет диапазон, значения которого должны уменьшаться что делает предикат верным. Вы должны ввести ключевое слово BETWEEN с начальным значением, ключевое AND и конечное значение. В отличие от IN, BETWEEN чувствителен к порядку, и первое значение в предложении должно быть первым по алфавитному или числовому порядку.Например:

    SELECT * FROM Salespeople WHERE comm BETWEEN .10 AND .12;
    SELECT * FROM Salespeople WHERE city BETWEEN 'Berlin' AND 'London';

    Если мы зададим следующие условия:

    SELECT * FROM Customers WHERE fname LIKE 'J%';

    то будут выбраны все заказчики,чьи имена начинаются на J:John,Jerry,James и т.д.

    Агрегатная функция,производит подсчет значений в столбце или числа строк в таблице.При работе со столбцом использует DISTINCT в качестве аргумента:

    SELECT COUNT ( DISTINCT snum ) FROM Orders;

    При подсчете строк имеет синтаксис:

    SELECT COUNT (*) FROM Customers;

    Предложение GROUP BY позволяет определять подмножество значений в особом поле в терминах другого поля, и применять функцию агрегата к подмножеству. Это дает возможность объединять поля и агрегатные функции в едином предложении SELECT. Например, предположим что вы хотите найти наибольшую сумму приобретений полученную каждым продавцом. Вы можете сделать раздельный запрос для каждого из них, выбрав MAX () из таблицы для каждого значения поля. GROUP BY позволит Вам поместить их все в одну команду:

    SELECT snum, MAX (amt) FROM Orders GROUP BY snum;

    HAVING определяет критерии используемые чтобы удалять определенные группы из вывода, точно также как предложение WHERE делает это для индивидуальных строк.Например:

    SELECT cid,cname,price,max(price) //max()-это тоже агрегатная функция FROM customers HAVING max(price)>500;

    HAVING действует сходно с WHERE,но с WHERE нельзя использовать агрегатные функции.

    Эта команда упорядочивает вывод запроса согласно значениям в том или ином количестве выбранных столбцов. Многочисленные столбцы упорядочиваются один внутри другого,также как с GROUP BY.

    Используется в подзапросах.

    SELECT cnum, cname, city FROM Customers WHERE EXISTS (SELECT * FROM Customers WHERE city ff0000″>Основные утилиты MySQL.

    В состав дистрибутива MySQL входят следующие утилиты:

    Mysqladmin

    Утилита для администрирования сервера.Может использоваться администратором,а также некоторыми пользователями,которым предоставлены определенные привилегии,например- Reload_priv,Shutdown_priv,Process_priv и File_priv .Данная команда может использоваться для создания баз данных,изменения пароля пользователя(администратор может изменить пароль любому пользователю,а рядовой пользователь-только свой собственный),перезагрузки и остановки сервера,просмотра списка процессов,запущенных на сервере. Mysqladmin поддерживает следующие команды:

    Пример использования mysqladmin для изменения пароля:

    mysqladmin -u bob password srawberry

    Следует заметить,что в случае использования mysqladmin для установки пароля,не требуется использование функции password().Mysqladmin сам заботится о шифровании пароля.

    Mysqlaccess

    Используется для проверки привилегий пользователя для доступа к конкретной базе данных. Общий синтаксис:

    mysqlaccess [host] [user] [db] опции

    Полезная утилита для проверки прав доступа пользователя,если он получает сообщение Access denied,при попытке соединиться с базой данных.

    Mysqlshow

    Используется,чтобы показать,с какими базами данных работает сервер,какие таблицы содержит каждая БД и какие колонки есть в каждой таблице.Синтаксис:

    mysqlshow [опции] [database [table [field]]]

    Mysqlshow может использовать следующие параметры:

    Если ввести mysqlshow без аргументов,будут показаны все базы данных,если указать имя БД, будут показаны все таблицы в ней.

    Mysqldump

    Используется для для создания дампа содержания базы данных (резервной копии).Можно записать содержимое базы данных в файл.Синтаксис:

    mysqldump [опции] [database [table [field]]]

    Mysqldump может использовать следующие параметры:

    Isamchk

    С помощью этой утилиты можно осуществлять восстановление таблиц,управление таблицами и сбор статистики.Синтаксис:

    isamchk [-?adeiqrsvwzIV] [-k #] [-O xxxx=size] [-Si] [-Sr #] [-O keybuffer=#]
    [-O readbuffer=#] [-O writebuffer=#] [-O sort key blocks=#] files

    При использовании опции -r нужно остановить mysqld.Перед началом работы нужно перейти в каталог,где находится таблица,нуждающаяся в проверке или ремонте.

    Isamlog

    Журнал транзакций,используется с опцией —log-isam=file_name демона mysqld.В файл записываются все изменения,происходящие в базе данных.Может использоваться для восстановления базы данных. Если есть резервная копия базы данных до того,как был сгенерирован isam-журнал,то информацию можно легко восстановить. Если нет копии,то нужно использовать все журналы с начала работы базы данных.

    Safe_mysqld

    Cкрипт для запуска демона mysqld в Unix-версиях.Выполняется при начальной загрузке системы. Для автоматического запуска нужно добавить запись в один из файлов инициализации системы.

    Введение в MySQL

    MySQL представляет систему управления реляционными базами данных (СУБД). На сегодняшний день это одна из самых популярных систем управления базами данных.

    Изначальным разработчиком данной СУБД была шведская компания MySQL AB. В 1995 году она выпустила первый релиз MySQL. В 2008 году компания MySQL AB была куплена компанией Sun Microsystems, а в 2010 году уже компания Oracle поглотила Sun и тем самым приобрела права на торговую марку MySQL. Поэтому MySQL на сегодняшний день развивается под эгидой Oracle.

    Текущей актуальной версией СУДБ является версия 8.0, которая вышла в январе 2018 года, но для которой постоянно выходят подверсии.

    MySQL обладает кроссплатформенностью, имеются дистрибутивы под самые различные ОС, в том числе наиболее популярные версии Linux, Windows, MacOS.

    Установка MySQL

    Для установки MySQL загрузим дистрибутив по адресу http://dev.mysql.com/downloads/mysql/ и выберем нужную версию.

    Загрузка MySQL

    После выбора версии нажмем на кнопку «Go to Download Page», и нас перенаправит на страницу загрузки дистрибутива. Здесь можно выбрать либо онлайн-загрузчик, либо полный пакет инсталятора. Можно выбрать любой:

    Загрузка и установка MySQL

    Дальше может быть предложено залогиниться с помощью учетной записи Oracle. Можно пропустить всю эту байду и без какого-либо логина нажать на ссылку «No thanks, just start my download.», и начнется загрузка:

    Загрузка и установка MySQL и Oracle

    Сначала будет предложено выбрать тип установки. Выберем тип Developer Default , которого вполне хватит для базовых нужд, и нажмем на кнопку Next:

    Тип установки MySQL

    Затем на этапе установки инсталлятор отобразит весь список устанавливаемых компонентов. У меня он выглядит так:

    Установка компонентов и сервера MySQL

    Чтобы выполнить установку всех компонентов, нажмем кнопку Execute.

    После того, как все компоненты будут установлены, нажмем кнопку Next.

    Настройка компонентов при установке MySQL

    Далее отобразится окно с перечнем продуктов, готовых к конфигурации

    Конфигурация MySQL

    Нажмем на кнопку Next и далее будет предложено установить ряд конфигурационных настроек сервера MySQL. В частности, здесь мы видим, что для подключения будет применяться протокол TCP/IP и порт 3306. Оставим все эти настройки соединения и порта по умолчанию:

    Type and Networking in MySQL

    На следующем шаге будет предложено установить метод аутентификации. Оставим настройки по умолчанию:

    Authentication Method in MySQL

    Затем на следующем окне прогаммы установки укажем какой-нибудь пароль, и запомним его, так как он потом потребуется при подключении к серверу MySQL:

    Установка пароля в MySQL

    Следующий набор конфигураций, который также оставим по умолчанию, указывает, что сервер будет запускаться в качестве службы Windows при запуске операционной системы:

    MySQL Server as Windows Service

    И на следующем экране необходимо применить все ранее установленные конфигурационные настройки, нажав на кнопку Execute:

    Apply configuration MySQL

    После применения конфигурационных настроек сервер MySQL будет полностью установлен и сконфигурирован, нажмем на кнопку «Finish».

    Далее опять отобразится окно с перечнем продуктов, готовых к конфигурации. Нажмем на кнопку «Next»

    Конфигурация MySQL

    И нам будет предложено установить конфигурацию для второго продукта — MySQL Router :

    MySQL Router Configuration

    Ничего не будем менять, оставив все настройки по умолчанию, и нажмем на кнопку «Finish».

    Далее опять отобразится окно с перечнем продуктов, готовых к конфигурации. Нажмем на кнопку «Next»

    Конфигурация MySQL Samples and Examples

    И далее нам будет предложено установить конфигурацию для третьего родукта — Samples and Examples (Примеры работы с MySQL). В частности, надо будет указать экземпляр сервера MySQL для получения примеров для работы с MySql. Установленный экземпляр будет автоматически отмечен в списке. Кроме того, предлагает протестировать подключения. В поле Password введем ранее указанный пароль и нажмем на кнопку Check :

    Тестирование подключения MySQL

    При успешном подлючении к MySQL отобразится выделенная зеленым цветом надпись Connection succeeded . Нажмем на кнопку Next.

    И на последнем окне необходимо будет применить конфигурацию для

    MySQL Samples and Examples

    Далее мы опять увидим окно с перечнем установленных и сконфигурированных продуктов. И нажмем на кнопку Next.

    MySQL Instalation

    На последнем экране мы увидим два отмеченных поля: Start MySQL Workbench after setup и Start MySQL Shell after setup . Эти поля позволяют запустить графический и консольный клиенты для управления сервером MySQL. Снимем отметки с этих полей, поскольку пока мы не собираемся запускать соответствующие программы.

    Finish MySQL Instalation

    И нажмем на кнопку Finish. Все! MySQL полностью установлен, сконфигурирован и запущен. И мы сможем с ним работать.

    Работаем с MySQL через командную строку

    Если на экране появляется приветствие mysql, то всё прошло ok.

    Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 344 Server version: 5.5.28-0ubuntu0.12.04.3 (Ubuntu) Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>

    Для выхода из командной строки mysql можно написать exit, в linux достаточно нажать ctrl+C. Теперь можно писать любые mysql-запросы. Чтобы запрос выполнился, в конце обязательно нужно поставит точку с запятой «;». При написании длинных запросов удобно делать enter`ом переход на следующую строку. А после полного написание запроса поставить «;» и нажать «enter».

    Для работы с конкретной базой данных нужно её выбрать с помощью оператора use. Показать все базы данных:

    show databases;

    Результатом будет что то вроде этого:

    mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | jeka | | linky | | mysql | | performance_schema | | phpmyadmin | | test | +--------------------+ 7 rows in set (0.00 sec)

    Выбрать базу данных jeka:

    mysql> use jeka Database changed

    Посмотреть названия всех таблиц в конкретной базе данных (после выполнения use):

    mysql> show tables;

    Просмотреть структуру таблицы (имена и тип полей):

    mysql> describe post_estimations; +------------+---------------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +------------+---------------------+------+-----+---------+-------+ | post_id | int(10) unsigned | YES | MUL | NULL | | | user_id | int(10) unsigned | YES | MUL | NULL | | | estimation | float(2,1) unsigned | NO | | NULL | | | date | int(10) unsigned | NO | | NULL | | +------------+---------------------+------+-----+---------+-------+ 4 rows in set (0.00 sec)

    Достать информацию о юзере с >

    mysql> SELECT * FROM users WHERE > Бэкап структуры таблицы, а точнее sql-запрос на её создание
    show create table table_name;

    Если в конце запроса поставить не ; а \G, то результат будет показан другим образом — иногда весьма удобно, если таблица имеет много полей:

    select * from update__v4_errors where > mysql использования /G вместо; дебаг запроса.

    Посмотреть, какие запросы выполняются в данный момент на сервере MySQL:

    show processlist;

    Учтите, что будут отображены еще не выполненные (активные) запросы, поэтому show processlist; актуальная команды только для нагруженных БД, в других случаях маловероятно, что команда что то покажет.

    Подробнее о том, как изменять структуру mysql-таблиц (alter table).

    Что делать если вижу знаки вопросов вместо текста в MySQL?

    Это проблема с кодировкой. Вероятно в my.ini файле mysql-сервера не добавлено:

    [mysqld] init-connect='SET NAMES utf8'

    Нужно добавить в .ini файл либо выполнить в консоли команду «SET NAMES utf8», после чего во время текущей сессии отображаться русский текст в mysql-консоли будет без проблем:

    mysql> set names utf8; Query OK, 0 rows affected (0.00 sec)

    Как сделать бэкап базы mysql через консоль Linux?

    Сделать бэкап базы database в файл dump_name.sql

    mysqldump -u [username] -p [password] [database] > [dump_name.sql]

    [username] – имя пользователя который имеет доступ к базе данных.
    [password] – пароль пользователя.
    [database] – имя базы данных.
    [dump_name.sql] – имя файла, дампа на выходе.

    Развернуть базу из файла через командную строку

    mysql -u [username] -p [password] [database] < [dump_to_restore.sql]

    [username] – имя пользователя который имеет доступ к базе данных.
    [password] – пароль пользователя.
    [database] – имя базы данных.
    [dump_to_restore.sql] – имя файла, из которого поднимаем базу

    Сделать дамп структуры одной таблицы mysql (без данных):

    mysqldump -u[user] -p[password] -h[host] [database] [table_name] --no-data > /path/dump_name.sql

    Например, задампим таблицу users из базы данных mydatabase:

    mysqldump -uroot mydatabase users > users.dump.sql

    Развернуть mysql-dump в БД с именем database_name:

    mysql -uroot database_name < users.dump.sql

    Ещё одна интересная штука. Выполнять из консоли, не требуется предварительно подключаться к mysql (mysql>). Вывести список таблиц базы данных, не подключаясь непосредственно к mysql:

    mysql -uroot -e 'show tables' database_name && echo done
    mysql> show variables like '%incr%';

    Заключение

    Может показаться, что писать запросы в командной строке не удобно. Но это заблуждение. На слабых машинах phpmyadmin работает не так шустро как хотелось бы. Тем более не на всех серверах стоят морды с phpmyadmin, adminer и т.д. Linux + mysql в терминале реально повысили мою производительность.

    Поисковые запросы , по которым приходили пользователи

    Дата добавления: 11 лет назад

    mysql

    Похожий контент:

    • Как добавить AI в существующую таблицу MySQL? 2 ответа
    • Как в mysql лучше всего хранить ip адрес? 1 ответ
    • В чём разница int(3) int(10) int(12) и так далее? mysql 3 ответа
    • mysqldump: Got error: 1044: Access denied for user when using LOCK TABLES 1 ответ
    • MySQL ошибки Lost connection to MySQL server at 'waiting for initial communication packet' 1 ответ
    • MySQL - изменение полей, структуры таблицы 0 комментариев
    • Запросы инъекции для mysql 0 комментариев
    • Mysql перенос таблиц из одной базы данных в другую 0 комментариев
    • MacOS сбросить root пароль для MySQL 0 комментариев
    • Анализ производительности MySQL с использованием performance_schema 0 комментариев

    Комментарии 2

    viktor 10 лет назад

    Последнее время я использую Valentina Studio для работы с MySQL. Очень хороший и бесплатный инструмент, рекомендую посмотреть. http://www.valentina-db.com/en/valentina-studio-overview

    root 10 лет назад

    Viktor, спасибо. Судя по скринам, штука интересная.
    Правда, уж больно много зависимостей она имеет.. Как решу проблему с зависимостями, отпишусь.

    eugene-PC:www eugene$ eugene$ sudo rpm -ivh ~/Загрузки/vstudio_x64_5_lin.rpm
    rpm: RPM should not be used directly install RPM packages, use Alien instead!
    rpm: However assuming you know what you are doing.
    ошибка: Неудовлетворенные зависимости:
    ld-linux-x86-64.so.2()(64bit) нужен для vstudio-5.3.0-2.x86_64
    ld-linux-x86-64.so.2(GLIBC_2.3)(64bit) нужен для vstudio-5.3.0-2.x86_64
    libc.so.6()(64bit) нужен для vstudio-5.3.0-2.x86_64
    libc.so.6(GLIBC_2.2.5)(64bit) нужен для vstudio-5.3.0-2.x86_64
    libc.so.6(GLIBC_2.3)(64bit) нужен для vstudio-5.3.0-2.x86_64
    libc.so.6(GLIBC_2.3.3)(64bit) нужен для vstudio-5.3.0-2.x86_64
    libc.so.6(GLIBC_2.3.4)(64bit) нужен для vstudio-5.3.0-2.x86_64
    libc.so.6(GLIBC_2.4)(64bit) нужен для vstudio-5.3.0-2.x86_64
    libdl.so.2()(64bit) нужен для vstudio-5.3.0-2.x86_64
    libdl.so.2(GLIBC_2.2.5)(64bit) нужен для vstudio-5.3.0-2.x86_64
    libgcc_s.so.1()(64bit) нужен для vstudio-5.3.0-2.x86_64
    libgcc_s.so.1(GCC_3.0)(64bit) нужен для vstudio-5.3.0-2.x86_64
    libgcc_s.so.1(GCC_3.4)(64bit) нужен для vstudio-5.3.0-2.x86_64
    libgdk-x11-2.0.so.0()(64bit) нужен для vstudio-5.3.0-2.x86_64
    libgdk_pixbuf-2.0.so.0()(64bit) нужен для vstudio-5.3.0-2.x86_64
    libglib-2.0.so.0()(64bit) нужен для vstudio-5.3.0-2.x86_64

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *