MySQL-server 20.12.2009 21:13 Администратор # mysql -u root -p Password: Входим SHOW DATABASES; выводит список всех БД обслуживаемых сервером. mysql> SHOW DATABASES; +--------------------+ | Database | +--------------------+ | information_schema | | Joo | | Joomla | | joomla | | mysql | | netams | | salomatin | +--------------------+ 7 rows in set (0.07 sec) Сменить пароль можно с помощь оператора SET PASSWORD (***): SET PASSWORD = PASSWORD('some password') SET PASSWORD FOR user = PASSWORD('some password') Первый строчка меняет пароль текущему пользователю, а вторая пользователю с именем «user». Пример: mysql#> SET PASSWORD FOR 'username'@'%.loc.gov' = PASSWORD('новый_пароль'); Или также пароль можно сменить с помощью утилиты «mysqladmin»: shell#> mysqladmin -p[старый_пароль] -u [пользователь] password [новый_пароль] Сменить пароль можно с помощь оператора SET PASSWORD (***): SET PASSWORD = PASSWORD('some password') SET PASSWORD FOR user = PASSWORD('some password') Первый строчка меняет пароль текущему пользователю, а вторая пользователю с именем «user». Пример: mysql#> SET PASSWORD FOR 'username'@'%.loc.gov' = PASSWORD('новый_пароль'); Или также пароль можно сменить с помощью утилиты «mysqladmin»: shell#> mysqladmin -p[старый_пароль] -u [пользователь] password [новый_пароль] Выгрузить базу MySQL можно командой: # mysqldump -u root -p DBName > mydb.sql ПРИМЕЧАНИЕ: Вы должны убедиться, что база данных не изменяется в это время, иначе Вы получите противоречивую копию. Сами базы MySQL хранит в /var/lib/mysql/db/, здесь можно посмотреть какие базы созданы. Чтобы загрузить базу, нужно сначала создать пустую, а для надёжности предварительно удалить старую: # mysql -u root -p mysql> drop database if exists DBName; mysql> create database DBName; mysql> quit а затем в неё загрузить данные: # mysql -u root -p DBName < mydb.sql После прочтения «манулов» для себя я решил запускать «mysqldump» со следующими опциями: shell#> mysqldump --ignore-table=db.table -x -F --opt -A > /[путь_куда_делать_дамп]/[имя_файла_дампа].sql mysql -u root mysql - Подсоединяемся к служебной базе MySQL c одноимённым названием mysql> UPDATE user SET Password=PASSWORD('new_pass') WHERE user='root'; - Меняем пароль рута на new_pass (или другой) и выходим. Служебная команда PASSWORD зашифровывает пароль. mysql> quit - выходим service mysqld restart - Перезагружаем сервер mysql -u root -p mysql - Подсоединяемся к серверу ещё раз, только теперь с паролем - Из таблицы user удаляем запись пользователя '%' и '' (какая есть), т.к. эта запись предоставляет доступ любому пользователю. mysql> SELECT host,user FROM user; mysql> DELETE FROM user WHERE user=''; - Из таблицы user удаляем запись пользователя '%' и '' (какая есть), т.к. эта запись предоставляет доступ любому пользователю. Получаем приглашение: mysql> Команды: SHOW TABLES; - показать таблицы в БД SHOW COLUMNS FROM db; - показать поля таблицы db USE mysql; - перейти в БД mysql SELECT host,user FROM user; - показать поля host, user таблицы user DROP TABLE transport; - удалить таблицу transport DELETE FROM user WHERE user='acct' AND host='%'; -удалить конкретную запись UPDATE db SET Delete_priv='Y' WHERE user='acct'; - изменить значение поля в записи FLUSH PRIVILEGES; - применить внесённые изменения mysql -u root -p12345 postfix < DB.sql; - пакетное выполнение SQL выражений для базы данных postfix ALTER TABLE mailbox ADD (uid int(10) unsigned DEFAULT '107' NOT NULL); - добавляем в таблицу mailbox обязательное поле uid со значением по умолчанию = 107 ALTER TABLE mailbox DROP uid; - удаляем поле uid из таблицы mailbox GRANT ALL PRIVILEGES ON DBName.* TO UserName@localhost IDENTIFIED BY '12345'; - дать все права на базу DBName пользователю UserName, подключающемуся с localhost с паролем 12345 ВОССТАНОВЛЕНИЕ БД ИЗ «ДАМП» ФАЙЛОВ Восстанавливать информацию из «дамп» файлов созданных с помощью утилиты «mysqldump» можно следующими командами: shell#> cat /<путь_до_дамп_файла>/<имя_дамп_файла> | mysql Или когда «дамп» сделан для определенной БД: shell#> mysql db_name < db-backup-file.sql «mysqlhothopy» - это скрипт написанный на языке perl для быстрого в режиме on-line резервного копирования БД и таблиц MySQL. Для просмотра подробной справки по mysqlhothopy нужно выполнить команду: shell#> perldoc mysqlhotcopy.sh Для себя я решил, что буду использовать для резервного копирования БД только утилиту «mysqldump» так, как для меня важно, чтобы можно было указывать копирования для всех БД, а не только для определенных, как это надо делать в утилите «mysqlhotcopy.sh». Также на мой выбор повлияло то, что для работы утилиты «mysqlhotcopy.sh» необходимо устанавливать дополнительные perl-модули, а мне делать это лениво. (*5*) CHECK TABLE TableName; - проверить целостность таблицы TableName REPAIR TABLE TableName; - исправить целостность таблицы TableName SHOW DATABASES; выводит список всех БД обслуживаемых сервером. Аналогичную информацию можно получить, запустив утилиту «mysqlshow». USE [имя_БД] делает базу данных [имя_БД] «текущей» (активной). HOW TABLES; выводит список всех таблиц в «текущей» БД Аналогичную информацию можно получить, запустив утилиту «mysqlshow [имя_БД]». DESCRIBE [имя_таблицы]; выводит описание таблицы [имя_таблицы] (имена столбцов, типы данных, и т.п). Аналогичную информацию можно получить, запустив утилиту «mysqlshow [имя_БД] [имя_таблицы]» CREATE DATABASE [имя_БД]; создает БД с именем [имя_БД] SELECT DATABASE(); выводит текущую БД SELECT USER(); выводит имя (username) текущего пользователя SELECT VERSION(); выводит информацию о версии сервера «mysqld» TRUNCATE TABLE [имя_таблицы]; удаляет из таблицы [имя_таблицы] все строки SELECT выбирает и возвращает строки из заданных таблиц, но лучше ознакомиться со всеми возможностями этого запроса в документации MySQL. Для создания более-менее продвинутого пользователя можно использовать такое выражение: mysql>GRANT SELECT,INSERT,UPDATE,DELETE,INDEX, CREATE,DROP ON *.* TO poweruser@localhost IDENTIFIED BY 'user_password'; Такой пользователь сможет использовать все основные SQL-команды для данных в таблицах, а так же создавать и удалять базы данных. Однако он не сможет выключать, перезапускать демон MySQL, смотреть на список процессов, не будет иметь доступ к файлам сервера, а так же сможет подключаться к базе данных только с localhost'а и указывая свой пароль. mysql> GRANT SELECT,INSERT,UPDATE,DELETE,INDEX, CREATE,DROP ON *.* TO vovanetams@localhost IDENTIFIED BY '333';Query OK, 0 rows affected (0.00 sec)