Посмотреть список всех БД:
SHOW DATABASES;
Выполнение с SQL файла:
SOURCE importtb.sql;
Создание и удаление БД:
CREATE DATABASE university CHARACTER SET utf8 COLLATE utf8_general_ci;;
USE university;
DROP DATABASE university;
Создание у удаление таблиц:
CREATE TABLE instructor (
ID INT(5) NOT NULL AUTO_INCREMENT,
name VARCHAR(20) NOT NULL,
dept_name VARCHAR(20),
salary NUMERIC(8,2),
PRIMARY KEY (ID)
);
DROP TABLE instructor;
Информация о таблице:
DESCRIBE table_1;
Работа с записями:
SELECT studentID, FirstName, LastName, FirstName + ' ' + LastName AS FullName FROM student;
SELECT DISTINCT FirstName, LastName, sat_score FROM student ORDER BY LastName DESC LIMIT 10;
SELECT studentID, FirstName, LastName, sat_score, rcd_updated FROM student WHERE LastName LIKE 'Monique%' OR LastName NOT LIKE '%Greene';
SELECT * FROM course WHERE course_id LIKE 'CS-___'; # _ - Один символ % - Любое поличество
SELECT * FROM instructor WHERE salary BETWEEN 50000 AND 100000;
INSERT table_1 (“column_1”, “column_2”, “column_3”) VALUES (“parameter_1”, “parameter_2”, “parameter_3”);
INSERT INTO `table_one` (id, parent_id, text) SELECT id, parent_id, option FROM `table_two`;
UPDATE table_1 SET column1 = value1,column2 = value2 WHERE Id = 4;
DELETE FROM table_1
Работа со структурой таблиц:
ALTER TABLE table_1 RENAME parameter_1 TO parameter_2; # изменить в таблице table_1 название поля parameter_1 на parameter_2.
ALTER TABLE table_1 ADD parameter_1 INT (3); # добавить в таблице table_1 поле с названием parameter_1.
ALTER TABLE table_1 MODIFY parameter_1 INT (3); # изменить в таблице table_1 поле с названием parameter_1.
ALTER TABLE table_1 DROP parameter_1; # удалить в таблице table_1 поле с названием parameter_1.
Групировка:
SELECT column_name, COUNT(*) FROM table_name GROUP BY column_name;
SELECT column_name , COUNT(*) FROM table_name GROUP BY column_name HAVING COUNT(*) > value;
Список привиллегий:
- ALL PRIVILEGES — как мы уже увидели ранее, данный набор прав предоставляет пользователю MySQL полный доступ к определенной базе данных (если не выбрана ни одна база данных, предоставляется глобальный доступ к системе)
- CREATE — позволяет пользователю создавать новые таблицы или базы данных
- DROP — позволяет пользователю удалять таблицы или базы данных
- DELETE — позволяет пользователю удалять строки из таблиц
- INSERT — позволяет пользователю вставлять строки в таблицы
- SELECT — позволяет пользователю выполнять команду SELECT для чтения данных из базы
- UPDATE — позволяет пользователю обновлять строки таблицы
- GRANT OPTION — позволяет пользователю предоставлять или отзывать права других пользователей
Чтение и пользователей и привиллегий:
SELECT user,host,plugin,authentication_string,password_expired FROM mysql.user;
SELECT host, user, password FROM mysql.user\G;
SHOW GRANTS FOR 'username'@'localhost';
SELECT * FROM mysql.db;
SELECT * FROM mysql.tables_priv;
SELECT * FROM mysql.columns_priv;
SELECT * FROM information_schema.schema_privileges;
SELECT * FROM information_schema.table_privileges;
SELECT * FROM information_schema.column_privileges;
SELECT * FROM information_schema.column_privileges WHERE GRANTEE="'test_user'@'localhost'";
Создание пользователя и конфигурирование привиллегий:
CREATE USER 'username1'@'localhost' IDENTIFIED BY 'password';
CREATE USER 'username3'@'%'IDENTIFIED WITH mysql_native_password BY 'password';
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Passw0rdC5';
GRANT ALL PRIVILEGES ON *.* TO 'test'@'localhost'
GRANT SELECT, INSERT, UPDATE, DELETE ON `some_db`.* TO 'some_user'@'somehost' WITH GRANT OPTION;
GRANT SELECT (id, user_name), UPDATE (user_name) ON `test_db`.`table_users` TO 'test_user'@'localhost';
REVOKE SELECT ON `somedb`.* FROM 'someuser'@'somehost';
REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'someuser'@'somehost';
FLUSH PRIVILEGES;
Удаление пользователя:
DROP USER 'some_user'@'%';
mysqldump -u root -p db_name > /db_backup.sql # Бэкап отдельной БД
mysqldump -u root -p --no-data db_name > /db_backup.sql # Бэкап отдельной БД без данных (Только структура)
mysqldump -u root -p --databases db_1 db_2 > dbs1_backup.sql # Бэкап нескольких БД
mysqldump -u root -p --all-databases > db_all_backup.sql # Бэкап всех БД
mysqldump -u root -p db_name table_name > /db_table_backup.sql # Бэкап отдельной таблицы БД
mysqldump -u root -p -v db_name | gzip --best > db_name.sql.gz # Бэкап с архивированием.
Основные параметры:
- --add-locks - Добавить команды LOCK TABLES перед выполнением и UNLOCK TABLE после выполнения каждого дампа таблицы (для ускорения доступа к MySQL).
- --add-drop-table (--add-drop-database) - Добавить команду DROP TABLE (DROP DATABASE) перед каждой командой CREATE TABLE (CREATE DATABASE).
- --all-databases - Произвести дамп всех баз данных. Аналогично опции --databases с указанием всех баз данных.
- --compress - Использовать сжатие всей информации между клиентом и сервером, если они оба поддерживают сжатие.
- --databases - Выполнить дамп нескольких баз данных. Обратите внимание на разницу в использовании: в этом случае таблицы не указываются. Все имена аргументов рассматриваются как имена баз данных. Оператор USE db_name; включается в вывод перед каждой новой базой данных.
- --extended-insert - Использовать команду INSERT с новым многострочным синтаксисом (повышает компактность и быстродействие операторов ввода).
- --force - Продолжать даже при получении ошибки SQL при выполнении дампа таблицы.
- --no-create-db - не создавать БД (Не будет CREATE DATABASE в дампе)
- --no-data - Не записывать информацию из строк таблицы.
- --routines - Добавить к дампу импорт функций и процедур.
- --verbose (-v) - Расширенный режим вывода.
mysql -u root -p db_name < /db_backup.sql # Восстановить с дампа
mysql -u root -p --add-drop-table db_name < /db_backup.sql # Восстановить с дампа c удалением таблиц БД перед разворачиванием.
SELECT CONCAT(table_schema, '.', table_name),
CONCAT(ROUND(table_rows / 1000000, 2), 'M') rows,
CONCAT(ROUND(data_length / ( 1024 * 1024 * 1024 ), 2), 'G') data,
CONCAT(ROUND(index_length / ( 1024 * 1024 * 1024 ), 2), 'G') idx,
CONCAT(ROUND(( data_length + index_length ) / ( 1024 * 1024 * 1024 ), 2), 'G') total_size,
ROUND(index_length / data_length, 2) idxfrac
FROM information_schema.TABLES
ORDER BY data_length + index_length DESC
LIMIT 50;
rows — количество записей в таблице
data — размер данных таблицы
idx — размер индекса таблицы
total_size — суммарные размер таблицы
idxfrac — часть размера индекса от общего размера таблицы
MYSQL_CONN="-uroot -ppassword"
mysql ${MYSQL_CONN} --skip-column-names -A -e"SELECT CONCAT('SHOW GRANTS FOR ''',user,'''@''',host,''';') FROM mysql.user WHERE user<>''" | mysql ${MYSQL_CONN} --skip-column-names -A | sed 's/$/;/g' > MySQLUserGrants.sql
-- Вытянуть все пароли пользователей:
mysqldump -u root mysql user > user_table_dump.sql
CREATE USER 'project'@'%' IDENTIFIED BY '<your_secret_password>';
CREATE DATABASE projectdb CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_bin';
GRANT ALL PRIVILEGES ON projectdb.* TO 'project'@'%';
FLUSH PRIVILEGES;
Источник: https://ruhighload.com/Выбор+самых+больших+таблиц+из+mysql