MariaDB | コマンド一覧

2023年2月17日

MariaDBとは,MySQLの作者であるミカエル・ウィデニウスにより開発されたリレーショナルデータベースシステム(RDBMS)であり,無料で使用可能となる.

Djangoを利用する際,外部データベースとしてMariaDBを選択した.コマンドを忘れることも多いため,使ったコマンド一覧を以下に記す.

コマンド一覧

矢印の解消

矢印が出てしまったときは,";"を入力することで解消できる.

MariaDB [(none)]> show database
    ->

MariaDBにログイン

MariaDBにログインする.ユーザー名が"dockeruser"の場合.

C:\Program Files\MariaDB 10.10\bin> mysql -u dockeruser -p

データベース作成

“studentdb"という名のデータベースを作成する.

MariaDB [(none)]> create batabase studentdb;

データベース削除

“studentdb"という名のデータベースを削除する.

MariaDB [(none)]> drop database studentdb;
Query OK, 11 rows affected (0.203 sec)

データベースの一覧出力

データベースの一覧を出力する.

MariaDB [(none)]> show databases;

データベースの切り替え

データベースを切り替える.以下はデータベースが"studentdb"の場合のコードとなる.

MariaDB [(none)]> use studentdb;

Database changed
MariaDB [studentdb]>

“\u"を利用してデータベースを切り替えることも可能となる.

$ MariaDB [(none)]> \u studentdb

Database changed
MariaDB [studentdb]>

テーブル一覧の出力

テーブルの一覧を出力する.データベースの切り替えを行ってから実行する.なお,以下はデータベースが"studentdb"の場合のコードとなる.

$ MariaDB [studentdb]> show tables;
+----------------------------+
| Tables_in_studentdb        |
+----------------------------+
| auth_group                 |
| auth_group_permissions     |
| auth_permission            |
| auth_user                  |
| auth_user_groups           |
| auth_user_user_permissions |
| django_admin_log           |
| django_content_type        |
| django_migrations          |
| django_session             |
| studentapp_student         |
+----------------------------+
11 rows in set (0.001 sec)

特定のテーブルにデータを追加

特定のテーブルにデータを追加する.以下はテーブルが"studentapp_student"の場合となる.

MariaDB [studentdb]> insert into studentapp_student (first_name,last_name,test_score) values('Kujo','Jotaro',99);
Query OK, 1 row affected (0.004 sec)

特定のテーブルに含まれるデータ削除

特定のテーブルに含まれているデータを削除する.以下はテーブルが"studentapp_student"の場合となる.

MariaDB [studentdb]> delete from studentapp_student;
Query OK, 1 row affected (0.013 sec)

権限の確認

権限を確認する.

MariaDB [(none)]> show grants;

ユーザーとパスワードの設定

ユーザー名とパスワードを設定する.ユーザー名とパスワードが以下の場合となる.

  • ユーザー名: dockeruser
  • パスワード: docker123
MariaDB [(none)]> create user 'dockeruser' identified by 'docker123';

ユーザーの削除

まずは,ユーザーの一覧を確認するため,以下コマンドを実行する.

MariaDB [(none)]> select user, host from mysql.user;
+-------------+-----------------+
| User        | Host            |
+-------------+-----------------+
| dockeruser  | %               |
| root        | 127.0.0.1       |
| root        | ::1             |
| root        | dell\_shirokuma |
| mariadb.sys | localhost       |
| root        | localhost       |
+-------------+-----------------+
6 rows in set (0.001 sec)

特定のユーザーを削除する.以下はユーザーが"dockeruser",Hostが"%"の場合のコードとなる.

MariaDB [(none)]> drop user dockeruser@'%';
Query OK, 0 rows affected (0.023 sec)

特定のユーザーに権限を付与

すべての権限を付与する.以下はユーザーが"dockeruser"の場合のコードとなる.

MariaDB [(none)]> GRANT ALL ON *.* TO dockeruser;

データベースを特定してユーザーに権限を付与

データベースを特定してすべての権限を付与する.以下はデータベースが"xxxdb",ユーザーが"abc_kujo"の場合のコードとなる.

MariaDB [(none)]> GRANT ALL ON xxxdb.* TO 'abc_kujo'@'%';

ユーザー一覧の出力

ユーザー一覧を出力する.なお,Hostの"%"はワイルドカードを意味する.

MariaDB [(none)]> select user, host from mysql.user;
+-------------+-----------------+
| User        | Host            |
+-------------+-----------------+
| dockeruser  | %               |
| root        | 127.0.0.1       |
| root        | ::1             |
| root        | dell\_shirokuma |
| mariadb.sys | localhost       |
| root        | localhost       |
+-------------+-----------------+
6 rows in set (0.057 sec)

特定のユーザー情報の一覧の出力

ユーザーに付与されている権限の一覧を確認することができる.以下はユーザーが"jojouser"の場合のコードとなる.

MariaDB [(none)]> select * from mysql.user where user = 'jojouser'
\G
*************************** 1. row ***************************
                  Host: %
                  User: jojouser
              Password: *BE3436A34CF7A77F7B44585181A74285114C08F3
           Select_priv: N
           Insert_priv: N
           Update_priv: N
           Delete_priv: N
           Create_priv: N
             Drop_priv: N
           Reload_priv: N
         Shutdown_priv: N
          Process_priv: N
             File_priv: N
            Grant_priv: N
       References_priv: N
            Index_priv: N
            Alter_priv: N
          Show_db_priv: N
            Super_priv: N
 Create_tmp_table_priv: N
      Lock_tables_priv: N
          Execute_priv: N
       Repl_slave_priv: N
      Repl_client_priv: N
      Create_view_priv: N
        Show_view_priv: N
   Create_routine_priv: N
    Alter_routine_priv: N
      Create_user_priv: N
            Event_priv: N
          Trigger_priv: N
Create_tablespace_priv: N
   Delete_history_priv: N
              ssl_type:
            ssl_cipher:
           x509_issuer:
          x509_subject:
         max_questions: 0
           max_updates: 0
       max_connections: 0
  max_user_connections: 0
                plugin: mysql_native_password
 authentication_string: *BE3436A34CF7A77F7B44585181A74285114C08F3
      password_expired: N
               is_role: N
          default_role:
    max_statement_time: 0.000000
1 row in set (0.015 sec)

ログインユーザー/認証されたユーザーの表示

ログインユーザーのみ表示

現在ログインしたときのログインユーザーおよびホストを表示する.
以下は現在ログインしたときのユーザーの情報となる.

  • ユーザー名(User): root
  • ホスト(Host): localhost
MariaDB [(none)]> select user();

+----------------+
| user()         |
+----------------+
| root@localhost |
+----------------+
1 row in set (0.000 sec)

認証されたログインユーザーのみ表示

MariaDBによって認証されたユーザー情報が表示される.
以下は現在MariaDBが認証したユーザーの情報となる.

  • ユーザー名(User): root
  • ホスト(Host): localhost
MariaDB [(none)]> select current_user();

+----------------+
| current_user() |
+----------------+
| root@localhost |
+----------------+
1 row in set (0.000 sec)

ログインユーザー/認証されたユーザーの表示

現在のログインユーザーおよび認証されたユーザーを表示する.

MariaDB [(none)]> select user(), current_user();

+----------------+----------------+
| user()         | current_user() |
+----------------+----------------+
| root@localhost | root@localhost |
+----------------+----------------+
1 row in set (0.001 sec)

現在の環境では同じ結果が出力されているが,root権限でログインし,Proxyではread_onlyとして実行する場合は以下のようになると考えられる.

  • user():ログイン権限がroot
  • current_user() / Proxy権限がread_only

Exitする方法

“ctrl"を押しながら"C"をクリックすると強制的にExitすることができる.

MariaDB [(none)]> xxx
Bye
Ctrl-C -- exit!

C:\Program Files\MariaDB 10.10\bin>

Exit後に初期directoryに戻る方法

Exit後のdirectoryから初期directoryに移動する.以下のように,"xxx"にユーザー名を入力する.

C:\Program Files\MariaDB 10.10\bin> mysql -u xxx -p

Enter password: ************

MariaDB [(none)]>

データベースに対してどのユーザーが権限を持っているか確認方法

特定のデータベースに対してどのユーザーが権限を持っているかを確認する.以下はデータベースが"tesdb"の場合となる.

MariaDB [sdsdb]> select grantee, table_schema, privilege_type from info
rmation_schema.schema_privileges where table_schema = 'tesdb';

+---------------------+--------------+-------------------------+
| grantee             | table_schema | privilege_type          |
+---------------------+--------------+-------------------------+
| 'tesdb_kumagai'@'%' | tesdb        | SELECT                  |
| 'tesdb_kumagai'@'%' | tesdb        | INSERT                  |
| 'tesdb_kumagai'@'%' | tesdb        | UPDATE                  |
| 'tesdb_kumagai'@'%' | tesdb        | DELETE                  |
| 'tesdb_kumagai'@'%' | tesdb        | CREATE                  |
| 'tesdb_kumagai'@'%' | tesdb        | DROP                    |
| 'tesdb_kumagai'@'%' | tesdb        | REFERENCES              |
| 'tesdb_kumagai'@'%' | tesdb        | INDEX                   |
| 'tesdb_kumagai'@'%' | tesdb        | ALTER                   |
| 'tesdb_kumagai'@'%' | tesdb        | CREATE TEMPORARY TABLES |
| 'tesdb_kumagai'@'%' | tesdb        | LOCK TABLES             |
| 'tesdb_kumagai'@'%' | tesdb        | EXECUTE                 |
| 'tesdb_kumagai'@'%' | tesdb        | CREATE VIEW             |
| 'tesdb_kumagai'@'%' | tesdb        | SHOW VIEW               |
| 'tesdb_kumagai'@'%' | tesdb        | CREATE ROUTINE          |
| 'tesdb_kumagai'@'%' | tesdb        | ALTER ROUTINE           |
| 'tesdb_kumagai'@'%' | tesdb        | EVENT                   |
| 'tesdb_kumagai'@'%' | tesdb        | TRIGGER                 |
| 'tesdb_kumagai'@'%' | tesdb        | DELETE HISTORY          |
+---------------------+--------------+-------------------------+
19 rows in set (0.001 sec)

特定のユーザーがどのデータベースに権限を持っているか確認方法

特定のユーザーがどのデータベースに権限を持っているかを確認する.以下はユーザー名が"tesdb_kumagai"の場合となる.

MariaDB [sdsdb]> select table_schema, privilege_type from information_s
chema.schema_privileges where grantee like "'tesdb_kumagai'@'%'";

+--------------+-------------------------+
| table_schema | privilege_type          |
+--------------+-------------------------+
| tesdb        | SELECT                  |
| tesdb        | INSERT                  |
| tesdb        | UPDATE                  |
| tesdb        | DELETE                  |
| tesdb        | CREATE                  |
| tesdb        | DROP                    |
| tesdb        | REFERENCES              |
| tesdb        | INDEX                   |
| tesdb        | ALTER                   |
| tesdb        | CREATE TEMPORARY TABLES |
| tesdb        | LOCK TABLES             |
| tesdb        | EXECUTE                 |
| tesdb        | CREATE VIEW             |
| tesdb        | SHOW VIEW               |
| tesdb        | CREATE ROUTINE          |
| tesdb        | ALTER ROUTINE           |
| tesdb        | EVENT                   |
| tesdb        | TRIGGER                 |
| tesdb        | DELETE HISTORY          |
+--------------+-------------------------+
19 rows in set (0.011 sec)

MariaDBのコマンド出力

mariadbコマンドの詳細を確認するときは,コマンドプロンプトから"mariadb -?"を実行する.以下は一部となる.

MariaDB [(none)]> mariadb -?

mariadb  Ver 15.1 Distrib 10.10.3-MariaDB, for Win64 (AMD64), source revision cc8b9bcee3ce88bc52147948f96765cd5009b88a
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Usage: mariadb [OPTIONS] [database]

Default options are read from the following files in the given order:
C:\WINDOWS\my.ini C:\WINDOWS\my.cnf C:\my.ini C:\my.cnf C:\Program Files\MariaDB 10.10\my.ini C:\Program Files\MariaDB 10.10\my.cnf C:\Program Files\MariaDB 10.10\data\my.ini C:\Program Files\MariaDB 10.10\data\my.cnf
The following groups are read: mysql mariadb-client client client-server client-mariadb
The following options may be given as the first argument:
--print-defaults          Print the program argument list and exit.
--no-defaults             Don't read default options from any option file.
The following specify which files/extra groups are read (specified before remaining options):
--defaults-file=#         Only read default options from the given file #.
--defaults-extra-file=#   Read this file after the global files are read.
--defaults-group-suffix=# Additionally read default groups with # appended as a suffix.

  -?, --help          Display this help and exit.
  -I, --help          Synonym for -?
  --abort-source-on-error
                      Abort 'source filename' operations in case of errors
  --auto-rehash       Enable automatic rehashing. One doesn't need to use
                      'rehash' to get table and field completion, but startup
                      and reconnecting may take a longer time. Disable with
                      --disable-auto-rehash.
                      (Defaults to on; use --skip-auto-rehash to disable.)
  -A, --no-auto-rehash
                      No automatic rehashing. One has to use 'rehash' to get
                      table and field completion. This gives a quicker start of
                      mysql and disables rehashing on reconnect.
  --auto-vertical-output
                      Automatically switch to vertical output mode if the
                      result is wider than the terminal width.
  -B, --batch         Don't use history file. Disable interactive behavior.
                      (Enables --silent.)
  --binary-as-hex     Print binary data as hex
  --character-sets-dir=name
                      Directory for character set files.
  --column-type-info  Display column type information.
  -c, --comments      Preserve comments. Send comments to the server. The
                      default is --skip-comments (discard comments), enable
                      with --comments.
  -C, --compress      Use compression in server/client protocol.
  -#, --debug[=#]     This is a non-debug version. Catch this and exit.
  --debug-check       Check memory and open file usage at exit.
  -T, --debug-info    Print some debug info at exit.
  -D, --database=name Database to use.
  --default-character-set=name
                      Set the default character set.
  --delimiter=name    Delimiter to be used.
  -e, --execute=name  Execute command and quit. (Disables --force and history
                      file.)
  --enable-cleartext-plugin
                      Obsolete option. Exists only for MySQL compatibility.
  -E, --vertical      Print the output of a query (rows) vertically.
  -f, --force         Continue even if we get an SQL error. Sets
                      abort-source-on-error to 0
  -G, --named-commands
                      Enable named commands. Named commands mean this program's
                      internal commands; see mysql> help . When enabled, the
                      named commands can be used from any line of the query,
                      otherwise only from the first line, before an enter.
                      Disable with --disable-named-commands. This option is
                      disabled by default.
  -i, --ignore-spaces Ignore space after function names.
  --init-command=name SQL Command to execute when connecting to MariaDB server.
                      Will automatically be re-executed when reconnecting.
  --local-infile      Enable/disable LOAD DATA LOCAL INFILE.
  -b, --no-beep       Turn off beep on error.
  -h, --host=name     Connect to host.
  -H, --html          Produce HTML output.
  -X, --xml           Produce XML output.
  --line-numbers      Write line numbers for errors.
                      (Defaults to on; use --skip-line-numbers to disable.)
  -L, --skip-line-numbers
                      Don't write line number for errors.
  -n, --unbuffered    Flush buffer after each query.
  --column-names      Write column names in results.
                      (Defaults to on; use --skip-column-names to disable.)
  -N, --skip-column-names
                      Don't write column names in results.
  --sigint-ignore     Ignore SIGINT (CTRL-C).
  -o, --one-database  Ignore statements except those that occur while the
                      default database is the one named at the command line.
  --pager[=name]      Pager to use to display results. If you don't supply an
                      option, the default pager is taken from your ENV variable
                      PAGER. Valid pagers are less, more, cat [> filename],
                      etc. See interactive help (\h) also. This option does not
                      work in batch mode. Disable with --disable-pager. This
                      option is disabled by default.
  -p, --password[=name]
                      Password to use when connecting to server. If password is
                      not given it's asked from the tty.
  -W, --pipe          Use named pipes to connect to server.
  -P, --port=#        Port number to use for connection or 0 for default to, in
                      order of preference, my.cnf, $MYSQL_TCP_PORT,
                      /etc/services, built-in default (3306).
  --progress-reports  Get progress reports for long running commands (like
                      ALTER TABLE)
                      (Defaults to on; use --skip-progress-reports to disable.)
  --prompt=name       Set the command line prompt to this value.
  --protocol=name     The protocol to use for connection (tcp, socket, pipe).
  -q, --quick         Don't cache result, print it row by row. This may slow
                      down the server if the output is suspended. Doesn't use
                      history file.
  -r, --raw           Write fields without conversion. Used with --batch.
  --reconnect         Reconnect if the connection is lost. Disable with
                      --disable-reconnect. This option is enabled by default.
                      (Defaults to on; use --skip-reconnect to disable.)
  -s, --silent        Be more silent. Print results with a tab as separator,
                      each row on new line.
  -S, --socket=name   The socket file to use for connection.
  --ssl               Enable SSL for connection (automatically enabled with
                      other flags).
                      (Defaults to on; use --skip-ssl to disable.)
  --ssl-ca=name       CA file in PEM format (check OpenSSL docs, implies
                      --ssl).
  --ssl-capath=name   CA directory (check OpenSSL docs, implies --ssl).
  --ssl-cert=name     X509 cert in PEM format (implies --ssl).
  --ssl-cipher=name   SSL cipher to use (implies --ssl).
  --ssl-key=name      X509 key in PEM format (implies --ssl).
  --ssl-crl=name      Certificate revocation list (implies --ssl).
  --ssl-crlpath=name  Certificate revocation list path (implies --ssl).
  --tls-version=name  TLS protocol version for secure connection.
  --ssl-verify-server-cert
                      Verify server's "Common Name" in its cert against
                      hostname used when connecting. This option is disabled by
                      default.
  -t, --table         Output in table format.
  --tee=name          Append everything into outfile. See interactive help (\h)
                      also. Does not work in batch mode. Disable with
                      --disable-tee. This option is disabled by default.
  -u, --user=name     User for login if not current user.
  -U, --safe-updates  Only allow UPDATE and DELETE that uses keys.
  -U, --i-am-a-dummy  Synonym for option --safe-updates, -U.
  -v, --verbose       Write more. (-v -v -v gives the table output format).
  -V, --version       Output version information and exit.
  -w, --wait          Wait and retry if connection is down.
  --connect-timeout=# Number of seconds before connection timeout.
  --max-allowed-packet=#
                      The maximum packet length to send to or receive from
                      server.
  --net-buffer-length=#
                      The buffer size for TCP/IP and socket communication.
  --select-limit=#    Automatic limit for SELECT when using --safe-updates.
  --max-join-size=#   Automatic limit for rows in a join when using
                      --safe-updates.
  --secure-auth       Refuse client connecting to server if it uses old
                      (pre-4.1.1) protocol.
  --server-arg=name   Send embedded server this as a parameter.
  --show-warnings     Show warnings after every statement.
  --plugin-dir=name   Directory for client-side plugins.
  --default-auth=name Default authentication client-side plugin to use.
  --binary-mode       Binary mode allows certain character sequences to be
                      processed as data that would otherwise be treated with a
                      special meaning by the parser. Specifically, this switch
                      turns off parsing of all client commands except \C and
                      DELIMITER in non-interactive mode (i.e., when binary mode
                      is combined with either 1) piped input, 2) the --batch
                      mysql option, or 3) the 'source' command). Also, in
                      binary mode, occurrences of '\r\n' and ASCII '\0' are
                      preserved within strings, whereas by default, '\r\n' is
                      translated to '\n' and '\0' is disallowed in user input.
  --connect-expired-password
                      Notify the server that this client is prepared to handle
                      expired password sandbox mode even if --batch was
                      specified.

注意事項

ユーザー名

ユーザー名に以下文字が入ると,通常のコマンドのままではエラーとなる.

  • ハイフン; hyphens (-)
  • スペース; spaces ( )
  • 特別な記号; special characters (@, !, $, %, &)

以下はエラー例となる.

MariaDB [(none)]> drop user sdsdb-kumagai@'%';

ERROR 1064 (42000): You have an error in your SQL syntax; 
check the manual that corresponds to your MariaDB server version 
for the right syntax to use near '-kumagai@'%'' at line 1

エラー発生を防止するには,以下のようにユーザー名を「’」で囲んでコマンドを入力する必要がある.

MariaDB [(none)]> drop user 'sdsdb-kumagai'@'%';

似たようなユーザー名を名付けるならば,アンダーバーを利用するのがよい.以下のは"sds_user"というユーザー名であるが,エラーは発生しない.

MariaDB [(none)]> drop user sdsdb_user@'%';

Query OK, 0 rows affected (0.014 sec)

参照

JavaDrive | MariaDB入門

JavaDrive | MariaDB入門 | ユーザーに権限を設定する(GRANT文)

以上

MariaDBMariaDB

Posted by クマガイ