Skip to content

Instantly share code, notes, and snippets.

@bazuzu931
Last active November 29, 2018 21:32
Show Gist options
  • Select an option

  • Save bazuzu931/af73e15fc4fae0dc5502ee69006d28d0 to your computer and use it in GitHub Desktop.

Select an option

Save bazuzu931/af73e15fc4fae0dc5502ee69006d28d0 to your computer and use it in GitHub Desktop.
# 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