Last active
November 29, 2018 21:32
-
-
Save bazuzu931/af73e15fc4fae0dc5502ee69006d28d0 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # Fix root access error in new mysql version | |
| sudo mysql -u root | |
| ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'new-password'; | |
| sudo service mysql stop | |
| sudo service mysql start | |
| # change root password | |
| mysqladmin -u root -p password | |
| show databases; | |
| use database_name; | |
| show tables; | |
| # Достать информацию о юзере с id=22: | |
| SELECT * FROM users WHERE id=22; | |
| # Если в конце запроса поставить не ; а \G, то | |
| # результат будет показан другим образом - иногда весьма удобно, если таблица имеет много полей: | |
| SELECT * FROM users WHERE id=22\G | |
| # Бэкап структуры таблицы, а точнее sql-запрос на её создание | |
| show create table table_name; | |
| # Посмотреть, какие запросы выполняются в данный момент на сервере MySQL: | |
| # Учтите, что будут отображены еще не выполненные (активные) запросы, поэтому | |
| # show processlist; актуальная команды только для нагруженных БД, в других | |
| # случаях маловероятно, что команда что то покажет. | |
| show processlist; | |
| # Сделать бэкап базы database в файл dump_name.sql | |
| mysqldump -u [username] -p [password] [database] > [dump_name.sql] | |
| # Развернуть базу из файла через командную строку | |
| mysql -u [username] -p [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 | |
| # | |
| show variables like '%incr%'; | |
| # Вывести список таблиц базы данных, не подключаясь непосредственно к mysql: | |
| mysql -uroot -e 'show tables' database_name && echo done | |
| # удаленный доступ | |
| mysql -u имя_пользователя -p пароль_пользователя -h хост_или_IP_сервера_MySQL | |
| mysql --user=имя_пользователя --password=пароль_пользователя --host=хост_или_IP_сервера_MySQL | |
| mysql -u имя_пользователя -h хост_или_IP_сервера_MySQL -p | |
| mysql --user=имя_пользователя --password=пароль_пользователя --host=хост_или_IP_сервера_MySQL --database=имя_базы_данных | |
| mysql -u имя_пользователя -h хост_или_IP_сервера_MySQL имя_базы_данных -p | |
| # | |
| CREATE DATABASE имя_базы_данных; | |
| mysqladmin create имя_базы_данных; | |
| # create user | |
| CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password'; | |
| GRANT ALL PRIVILEGES ON *.* TO 'newuser'@'localhost'; | |
| FLUSH PRIVILEGES; | |
| # Show user's list | |
| SELECT USER FROM mysql.user; | |
| # Delete user | |
| DROP USER 'jeffrey'@'localhost'; | |
| # Кстати, при указании хоста для подключения к MySQL серверу можно использовать символ процента — %, | |
| # который означает, что создаваемый пользователь может соединяться с сервером MySQL с любого IP адреса или хоста. | |
| # При этом нужно учитывать, что в данном случае localhost не входит в список адресов, | |
| # указываемых с помощью %, т.к. localhost обозначает подключение через UNIX сокет вместо стандартного TCP/IP. | |
| # Т.е. если созданный пользователь MySQL будет подключаться к серверу не с помощью сокетов, | |
| # а по другому протоколу, указываемому при соединении с MySQL сервером в консоли, то ему нужно будет | |
| # создавать две учётные записи пользователя: | |
| CREATE USER 'имя_пользователя'@'%' IDENTIFIED BY 'password'; | |
| CREATE USER 'имя_пользователя'@'localhost' IDENTIFIED BY 'password'; | |
| # Если захотите создать суперюзера, т.е. обладающего глобальными привилегиями для осуществления различных действий | |
| # со всеми БД на сервере,то используйте следующий вызов команды: | |
| GRANT ALL PRIVILEGES ON имя_базы_данных.* TO 'имя_пользователя'@'хост_или_IP_машины'; | |
| GRANT ALL ON *.* TO 'имя_пользователя'@'хост_или_IP_машины'; | |
| # Присвоить все права на все | |
| GRANT ALL PRIVILEGES ON *.* TO 'user'@'localhost'; | |
| # права только на базы данных, начинающихся с 'laravel' | |
| GRANT ALL PRIVILEGES ON `laravel\_%`.* TO 'laravel'@'localhost'; | |
| # Кстати, не лишним будет очистить кэш MySQL сервера после установки привилегий. Если будете их менять, | |
| # то также не забывайте делать это вызовом следующей команды: | |
| FLUSH PRIVILEGES; | |
| # А если захотите поменять права пользователя, то используйте сначала следующую команду чтобы сбросить все права: | |
| REVOKE ALL PRIVILEGES ON *.* FROM 'имя_пользователя'@'хост_или_IP_машины'; | |
| # А затем установите ему нужные с помощью GRANT, как это было описано ранее. | |
| # Если же вам в будущем потребуется изменить пароль пользователя MySQL, то для этого достаточно | |
| # выполнить в MySQL Shell следующие команды: | |
| SET PASSWORD FOR 'имя_пользователя'@'хост_или_IP_машины' = PASSWORD('новый_пароль'); | |
| FLUSH PRIVILEGES; | |
| # | |
| CREATE TABLE имя_таблицы (название_поля_1 тип_поля_1, название_поля_2 тип_поля_2(размер_поля_2), INDEX(название_поля_1), ...); | |
| # скопировать таблицу в другую базу данных или просто создать копию в текущей, вам помогут следующие команды: | |
| # Данные команды позволяют скопировать структуру таблицы и её данные вместе с индексами и триггерами таблиц | |
| CREATE TABLE новое_имя_таблицы LIKE старое_имя_таблицы; | |
| INSERT новое_имя_таблицы SELECT * FROM старое_имя_таблицы; | |
| # Если вам нужны просто данные и структура (имена полей и их типов данных), то можете обойтись вызовом одной команды: | |
| CREATE TABLE новое_имя_таблицы AS SELECT * FROM старое_имя_таблицы; | |
| # выводит информацию о полях таблицы БД в табличном виде в консоль MySQL с указанием названия поля, | |
| # типа данных, наличия ключей, значением по умолчанию и т.д. При использовании ключевого слова FULL | |
| # можно получить расширенную информацию, включая привилегии на каждое из полей для текущего пользователя, | |
| # комментарии к каждому из них и значение кодировки. | |
| SHOW FULL COLUMNS FROM имя_таблицы; | |
| # команда, помимо имени, типов полей и значений их по умолчанию позволяет получить значения ключей таблиц, | |
| # движков таблиц (InnoDB, MyISAM), кодировку и др. | |
| SHOW CREATE TABLE имя_таблицы; | |
| # удалить определённое поле таблицы | |
| ALTER TABLE имя_таблицы DROP COLUMN название_поля; | |
| # добавить определённое поле таблицы | |
| ALTER TABLE имя_таблицы ADD COLUMN название_поля VARCHAR(20); | |
| # переименовать поле и попутно изменить тип хранимых в нём данных | |
| ALTER TABLE имя_таблицы CHANGE старое_название_поля новое_название_поля VARCHAR(50); | |
| # изменить исключительно тип данных. | |
| ALTER TABLE имя_таблицы MODIFY название_поля VARCHAR(3); | |
| # Тоже самое можно делать и с индексами таблиц с помощью во многом похожих команд: | |
| # Приведённые команды позволяют добавлять, переименовывать и удалять индексы из таблиц MySQL через командную строку | |
| ALTER TABLE имя_таблицы ADD UNIQUE INDEX имя_индекса (название_поля_1, ...); | |
| ALTER TABLE имя_таблицы rename INDEX старое_имя_индекса TO новое_имя_индекса; | |
| ALTER TABLE имя_таблицы DROP INDEX имя_индекса; | |
| # Для добавления и удаления индексов есть, кстати, ещё альтернативный вариант | |
| # использования самостоятельных команд, а не делать это через ALTER TABLE. | |
| CREATE UNIQUE INDEX имя_индекса (название_поля_1, ...) ON имя_таблицы; | |
| DROP INDEX имя_индекса ON имя_таблицы; | |
| # Add Primary key | |
| ALTER TABLE tablename add newid INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST; | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment