Часто используемые команды MySQL

  1. Создать базу данных с кодировкой utf8
    CREATE DATABASE IF NOT EXISTS `my_db` CHARACTER SET utf8 COLLATE utf8_general_ci;
  2. Список БД
    SHOW DATABASES;
  3. Узнать кодировку БД
    SHOW CREATE DATABASE 
  4. Выбрать БД
    USE ;
  5. Создать таблицу table-name с первичным ключом id
    CREATE TABLE table-name
        (id SMALLINT,
         name VARCHAR(30),
         CONSTRAINT pk_table-name PRIMARY KEY (id)
        );
         
  6. Просмотр таблиц
    SHOW TABLES FROM ;
  7. Список столбцов MySQL
    describe ;
  8. Добавить данные в таблицу MySQL
    INSERT INTO <table_name> (<col1_name>, <col2_name>)
    VALUES ('VALUE1', 'VALUE2')
  9. Изменить значения столбцов в таблице MySQL
    UPDATE <table_name>
    SET <col1> = 'VALUE2'
    WHERE <col2> = 'VALUE1';
  10. Просмотр значения столбцов
    SELECT  FROM  WHERE  = 'VALUE';
  11. Просмотр индексов
    SHOW INDEX FROM ;
  12. Добавить пользователей MySQL
    mysql> GRANT ALL PRIVILEGES ON *.* TO monty@localhost
        ->     IDENTIFIED BY 'some_pass' WITH GRANT OPTION;
    mysql> GRANT ALL PRIVILEGES ON *.* TO monty@"%"
            -> IDENTIFIED BY 'some_pass' WITH GRANT OPTION;
    mysql> GRANT RELOAD,PROCESS ON *.* TO admin@localhost;
    mysql> GRANT USAGE ON *.* TO dummy@localhost;
    

    monty
    Полноценный суперпользователь — он может подсоединяться к серверу откуда угодно, но должен использовать для этого пароль some_pass. Обратите внимание на то, что мы должны применить операторы GRANT как для monty@localhost, так и для monty@»%». Если не добавить запись с localhost, запись анонимного пользователя для localhost, которая создается при помощи mysql_install_db, будет иметь преимущество при подсоединении с локального компьютера, так как в ней указано более определенное значение для поля Host, и она расположена раньше в таблице user.
    admin
    Пользователь, который может подсоединяться с localhost без пароля; ему назначены административные привилегии RELOAD и PROCESS. Эти привилегии позволяют пользователю запускать команды mysqladmin reload, mysqladmin refresh и mysqladmin flush-*, а также mysqladmin processlist. Ему не назначено никаких привилегий, относящихся к базам данных (их можно назначить позже, дополнительно применив оператор GRANT).
    dummy
    Пользователь, который может подсоединяться к серверу без пароля, но только с локального компьютера. Все глобальные привилегии установлены в значение ‘N’-тип привилегии USAGE, который позволяет создавать пользователей без привилегий. Предполагается, что относящиеся к базам данных привилегии будут назначены позже.

  13. Пользователи
    DESC mysql.user;
    SELECT host, user, password FROM mysql.user;
  14. Просмотр привилегий пользователей
    SHOW GRANTS FOR @;
    SHOW GRANTS;
    SHOW GRANTS FOR CURRENT_USER;
    SHOW GRANTS FOR CURRENT_USER();
  15. Просмотр прав пользователя на конкретную БД
    SELECT user,host FROM mysql.db WHERE `db` = 'some_database';
    
  16. Значения системных переменных
    SHOW VARIABLES;
  17. Статистика по MySQL процессам
    SHOW [FULL] PROCESSLIST;
  18. Общая статистика
    SHOW STATUS;
  19. Статистика по всем таблицам в бд
    SHOW TABLE STATUS [FROM db_name];
  20. Удалить таблицу
    DROP TABLE [IF EXISTS] tbl_name [, tbl_name,...] [RESTRICT | CASCADE]
  21. Удалить БД
    DROP DATABASE [IF EXISTS] db_name
  22. Удалить строку
    DELETE [LOW_PRIORITY | QUICK] FROM table_name
        [WHERE where_definition]
        [ORDER BY ...]
        [LIMIT rows]
  23. Обновить столбец
    UPDATE [LOW_PRIORITY] [IGNORE] tbl_name
        SET col_name1=expr1 [, col_name2=expr2 ...]
        [WHERE where_definition]
        [ORDER BY ...]
        [LIMIT rows]
    или
    UPDATE [LOW_PRIORITY] [IGNORE] tbl_name [, tbl_name ...]
        SET col_name1=expr1 [, col_name2=expr2 ...]
        [WHERE where_definition]
  24. Изменить пароль root
    mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass');
  25. Сделать дамп БД
    mysqldump -uroot -p  > db.sql
  26. Развернуть дамп БД
    mysql -uroot -p  < db.sql
  27. Просмотреть информация от таблицах INNODB
    SHOW ENGINE INNODB STATUS\G
  28. Полезная информация
    SHOW PROCESSLIST;
    SHOW GLOBAL STATUS;

Создать базу данных и пользователя mysql с правами на эту базу данных

  1. Логинимся с правами суперпользователя
    mysql -uroot -p
  2. Создаем ДБ
    CREATE DATABASE `my_db` CHARACTER SET utf8 COLLATE utf8_general_ci;
  3. Создаем пользователя с полными правами на только что созданную ДБ и с возможностью входа с localhost
    mysql> GRANT ALL PRIVILEGES ON .* TO new_user@localhost
        ->     IDENTIFIED BY 'some_pass' WITH GRANT OPTION;
  4. Если необходим удаленный вход, вместо @localhost необходимо выполнить @»%»
    mysql> GRANT ALL PRIVILEGES ON .* TO new_user@"%"
        ->     IDENTIFIED BY 'some_pass' WITH GRANT OPTION;

    Также необходимо в настройках /etc/mysql/my.cnf изменить строку bind-address с 127.0.0.1 на 0.0.0.0 и перезапустить демон mysql

    bind-address = 0.0.0.0