「MySQL - その他」の版間の差分

提供:MochiuWiki - SUSE, Electronic Circuit, PCB
ナビゲーションに移動 検索に移動
(ページの作成:「== 概要 == <br><br> == rootユーザのパスワードの初期化 == MySQLにrootユーザのパスワードを紛失した場合、パスワードを初期化する必要がある。<br> <br> まず、<code>--user=mysql</code>オプションを付加して、MySQLを起動する。<br> もし、rootユーザでログインする場合、rootユーザの所有するファイルを作成するため、問題を引き起こす可能性がある。<br> <br> 次に…」)
 
(文字列「__FORCETOC__」を「{{#seo: |title={{PAGENAME}} : Exploring Electronics and SUSE Linux | MochiuWiki |keywords=MochiuWiki,Mochiu,Wiki,Mochiu Wiki,Electric Circuit,Electric,pcb,Mathematics,AVR,TI,STMicro,AVR,ATmega,MSP430,STM,Arduino,Xilinx,FPGA,Verilog,HDL,PinePhone,Pine Phone,Raspberry,Raspberry Pi,C,C++,C#,Qt,Qml,MFC,Shell,Bash,Zsh,Fish,SUSE,SLE,Suse Enterprise,Suse Linux,openSUSE,open SUSE,Leap,Linux,uCLnux,Podman,電気回路,電子回路,基板,プリント基板 |description={{PAGENAME}} - 電子回路とSUSE Linuxに関する情報 | This pag…)
 
(同じ利用者による、間の2版が非表示)
6行目: 6行目:
MySQLにrootユーザのパスワードを紛失した場合、パスワードを初期化する必要がある。<br>
MySQLにrootユーザのパスワードを紛失した場合、パスワードを初期化する必要がある。<br>
<br>
<br>
まず、<code>--user=mysql</code>オプションを付加して、MySQLを起動する。<br>
まず、MySQLを起動して、rootユーザ以外のユーザでログインする。<br>
もし、rootユーザでログインする場合、rootユーザの所有するファイルを作成するため、問題を引き起こす可能性がある。<br>
もし、rootユーザでログインする場合、rootユーザの所有するファイルを作成するため、問題を引き起こす可能性がある。<br>
<br>
<br>
12行目: 12行目:
pidファイルは、/var/lib/mysqlディレクトリ、/var/run/mysqldディレクトリ、/<MySQLのインストールディレクトリ>/dataディレクトリ等に、mysqld.pidファイルとして保存されている。<br>
pidファイルは、/var/lib/mysqlディレクトリ、/var/run/mysqldディレクトリ、/<MySQLのインストールディレクトリ>/dataディレクトリ等に、mysqld.pidファイルとして保存されている。<br>
<br>
<br>
新しいrootユーザのパスワードを作成する前に、MySQLサーバ(mysqldプロセス)を停止する。<br>
新しいrootユーザのパスワードを作成する前に、MySQL(mysqldプロセス)を停止する。<br>
  kill `cat /<MySQLのpidファイルがあるディレクトリ>/mysqld.pid`
  kill $(cat /<MySQLのpidファイルがあるディレクトリ>/mysqld.pid)
<br>
<br>
次に、MySQLのpidファイルの最下行に、以下に示す内容を追記する。<br>
次に、rootユーザのパスワード初期化スクリプトを作成する。<br>
vi /<MySQLのpidファイルがあるディレクトリ>/mysqld.pid または sudo vi /<MySQLのpidファイルがあるディレクトリ>/mysqld.pid
ここでは、ホームディレクトリにmysql-initファイルとして保存している。<br>
vi ~/mysql-init
<br>
<br>
  # /<MySQLのpidファイルがあるディレクトリ>/mysqld.pidファイル
  # ~/mysql-initファイル
   
   
  ALTER USER 'root'@'<ホスト名またはIPアドレス>' IDENTIFIED BY '<新しいrootユーザのパスワード>';
  ALTER USER 'root'@'<ホスト名またはIPアドレス>' IDENTIFIED BY '<新しいrootユーザのパスワード>';
<br>
編集したMySQLのpidファイルをホームディレクトリ等にコピーする。<br>
ここでは、mysql-initファイルとして保存している。<br>
cp /<MySQLのpidファイルがあるディレクトリ>/mysqld.pid ~/mysql-init
<br>
<br>
MySQLの再起動と新しいrootのパスワードを適用する。<br>
MySQLの再起動と新しいrootのパスワードを適用する。<br>
MySQLの起動方法によっては、他のオプション(<code>init</code>コマンドの前に、<code>--defaults-file</code>オプション等)を付加する必要がある。<br>
MySQLの起動方法によっては、他のオプション(<code>--init-file</code>オプションの前に、<code>--defaults-file</code>オプション)を付加する必要がある。<br>
  mysqld --init-file=/<mysql-initファイルを保存したディレクトリ>/mysql-init &
  mysqld --init-file=/<mysql-initファイルを保存したディレクトリ>/mysql-init &
<br>
<br>
MySQLにrootユーザとしてログインして、新しいパスワードが機能することを確認する。<br>
MySQLにrootユーザでログインして、新しいパスワードが機能することを確認する。<br>
最後に、pidファイルおよびmysql-initファイルを削除する。<br>
<br>
  rm /<MySQLのpidファイルがあるディレクトリ>/mysqld.pid ~/mysql-init
最後に、mysql-initファイルrootユーザのパスワード初期化スクリプトを削除する。<br>
  # または
  rm ~/mysql-init
  sudo /<MySQLのpidファイルがあるディレクトリ>/mysqld.pid ~/mysql-init
<br><br>
 
== 複数行のコマンド ==
MySQLのコマンドラインでは、複数行に渡ってコマンドを記述する方法がいくつか存在する。<br>
<br>
* セミコロンを使用する方法
*: MySQLクライアントでは、セミコロン (;) がクエリの終わりを示す。
*: そのため、セミコロンを入力するまでは、改行してもクエリが続いているとみなされる。
<syntaxhighlight lang="mysql">
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, PROCESS,
      REFERENCES, INDEX, ALTER, SHOW DATABASES, CREATE TEMPORARY TABLES,
      LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW,
      SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER,
      EVENT, TRIGGER
      ON *.*
      TO 'hoge'@'localhost'
      WITH GRANT OPTION;
</syntaxhighlight>
<br>
* バッククォート (`) を使用する方法
*: MySQL 5.7以降では、バッククォートを使用して複数行のステートメントを記述することができる。
<syntaxhighlight lang="mysql">
  `GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, PROCESS,
        REFERENCES, INDEX, ALTER, SHOW DATABASES, CREATE TEMPORARY TABLES, LOCK TABLES,
        EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW,
        CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER
        ON *.*
        TO 'hoge'@'localhost'
        WITH GRANT OPTION`;
  </syntaxhighlight>
<br>
* MySQLクライアント専用コマンドを使用する方法
*: MySQLクライアントにおいて、\を行末に使用して複数行のクエリを記述することが可能であるが、デフォルトでは無効になっている。
*: 有効にする場合は、MySQLクライアントの起動時に<code>--line-numbers</code>オプションを使用する、または、クライアント内で<code>prompt \n-></code>コマンドを実行する。
<syntaxhighlight lang="mysql">
-- 改行 (\) を有効にする
prompt \n->
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, PROCESS,                  \
      REFERENCES, INDEX, ALTER, SHOW DATABASES, CREATE TEMPORARY TABLES, LOCK TABLES, \
      EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW,        \
      CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT,                              \
      TRIGGER ON *.*        \
      TO 'hoge'@'localhost' \
      WITH GRANT OPTION;
-- 改行 (\) を無効にする (プロンプトを元の状態に戻す)
prompt mysql>
</syntaxhighlight>
<br><br>
<br><br>
{{#seo:
|title={{PAGENAME}} : Exploring Electronics and SUSE Linux | MochiuWiki
|keywords=MochiuWiki,Mochiu,Wiki,Mochiu Wiki,Electric Circuit,Electric,pcb,Mathematics,AVR,TI,STMicro,AVR,ATmega,MSP430,STM,Arduino,Xilinx,FPGA,Verilog,HDL,PinePhone,Pine Phone,Raspberry,Raspberry Pi,C,C++,C#,Qt,Qml,MFC,Shell,Bash,Zsh,Fish,SUSE,SLE,Suse Enterprise,Suse Linux,openSUSE,open SUSE,Leap,Linux,uCLnux,Podman,電気回路,電子回路,基板,プリント基板
|description={{PAGENAME}} - 電子回路とSUSE Linuxに関する情報 | This page is {{PAGENAME}} in our wiki about electronic circuits and SUSE Linux
|image=/resources/assets/MochiuLogo_Single_Blue.png
}}


__FORCETOC__
__FORCETOC__
[[カテゴリ:MySQL]]
[[カテゴリ:MySQL]]

2024年11月10日 (日) 15:54時点における最新版

概要



rootユーザのパスワードの初期化

MySQLにrootユーザのパスワードを紛失した場合、パスワードを初期化する必要がある。

まず、MySQLを起動して、rootユーザ以外のユーザでログインする。
もし、rootユーザでログインする場合、rootユーザの所有するファイルを作成するため、問題を引き起こす可能性がある。

次に、MySQLのpidファイルの場所を確認する。
pidファイルは、/var/lib/mysqlディレクトリ、/var/run/mysqldディレクトリ、/<MySQLのインストールディレクトリ>/dataディレクトリ等に、mysqld.pidファイルとして保存されている。

新しいrootユーザのパスワードを作成する前に、MySQL(mysqldプロセス)を停止する。

kill $(cat /<MySQLのpidファイルがあるディレクトリ>/mysqld.pid)


次に、rootユーザのパスワード初期化スクリプトを作成する。
ここでは、ホームディレクトリにmysql-initファイルとして保存している。

vi ~/mysql-init


# ~/mysql-initファイル

ALTER USER 'root'@'<ホスト名またはIPアドレス>' IDENTIFIED BY '<新しいrootユーザのパスワード>';


MySQLの再起動と新しいrootのパスワードを適用する。
MySQLの起動方法によっては、他のオプション(--init-fileオプションの前に、--defaults-fileオプション)を付加する必要がある。

mysqld --init-file=/<mysql-initファイルを保存したディレクトリ>/mysql-init &


MySQLにrootユーザでログインして、新しいパスワードが機能することを確認する。

最後に、mysql-initファイルrootユーザのパスワード初期化スクリプトを削除する。

rm ~/mysql-init



複数行のコマンド

MySQLのコマンドラインでは、複数行に渡ってコマンドを記述する方法がいくつか存在する。

  • セミコロンを使用する方法
    MySQLクライアントでは、セミコロン (;) がクエリの終わりを示す。
    そのため、セミコロンを入力するまでは、改行してもクエリが続いているとみなされる。
 GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, PROCESS, 
       REFERENCES, INDEX, ALTER, SHOW DATABASES, CREATE TEMPORARY TABLES, 
       LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, 
       SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, 
       EVENT, TRIGGER 
       ON *.* 
       TO 'hoge'@'localhost' 
       WITH GRANT OPTION;


  • バッククォート (`) を使用する方法
    MySQL 5.7以降では、バッククォートを使用して複数行のステートメントを記述することができる。
 `GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, PROCESS, 
        REFERENCES, INDEX, ALTER, SHOW DATABASES, CREATE TEMPORARY TABLES, LOCK TABLES, 
        EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, 
        CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER 
        ON *.* 
        TO 'hoge'@'localhost' 
        WITH GRANT OPTION`;


  • MySQLクライアント専用コマンドを使用する方法
    MySQLクライアントにおいて、\を行末に使用して複数行のクエリを記述することが可能であるが、デフォルトでは無効になっている。
    有効にする場合は、MySQLクライアントの起動時に--line-numbersオプションを使用する、または、クライアント内でprompt \n->コマンドを実行する。
 -- 改行 (\) を有効にする
 prompt \n->
 
 GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, PROCESS,                  \
       REFERENCES, INDEX, ALTER, SHOW DATABASES, CREATE TEMPORARY TABLES, LOCK TABLES, \
       EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW,         \
       CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT,                              \
       TRIGGER ON *.*        \
       TO 'hoge'@'localhost' \
       WITH GRANT OPTION;
 
 -- 改行 (\) を無効にする (プロンプトを元の状態に戻す)
 prompt mysql>