MySQL8.0ではGRANT構文でユーザを作成できない

OS: Ubuntu Server 18.04 LTS
MySQL 8.0.12

図1. MySQLのマスコットと思われる黄色

MySQLの公式サイトで、黄色くてまるい大変な笑顔の黄色がMySQL8.0の登場に触れていたので此れをソースからインストールした。5.7.21のソースインストールと手順は全然違わないけれどもユーザの作成が今までと異なっていた。

mysql> grant all on *.* to 'guro'@'localhost' identified by 'avava' with grant option;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'identified by 'avava' with grant option' at line 1

こういう有様である。GRANT構文で暗黙のうちにユーザも作成することはMySQL5.7まではなんとなく許されていたけれども、MySQL8.0からは容赦しない情勢である。公式文献でも、普通はCREATE USER構文で以ってユーザを作成して、然る後にGRANT構文で権限を与えるという順番が本当である旨、記載されている。尤もな話である。

Normally, a database administrator first uses CREATE USER to create an account and define its nonprivilege characteristics such as its password, whether it uses secure connections, and limits on access to server resources, then uses GRANT to define its privileges.

https://dev.mysql.com/doc/refman/8.0/en/grant.html#grant-overview

これからは次のような手続きでユーザを作成してゆく。

mysql> create user 'guro'@'localhost' identified by 'avava';
Query OK, 0 rows affected (0.14 sec)

mysql> grant all on *.* to 'guro'@'localhost' with grant option;
Query OK, 0 rows affected (0.19 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.22 sec)

「MySQL8.0ではGRANT構文でユーザを作成できない」への5件のフィードバック

  1. ありがとうございます!
    なぜできないんだろうと悩んでいた時に、見させていただいて解決しました。
    ありがとうございました!

    返信
  2. お世話になります
    今学習中です
    CentOS7.4を使っています
    MySQL version:8.0.17です
    create_myapp.sql

    drop database if exists myapp;
    create database myapp;
    grant all on myapp.* to myapp_user@localhost identified by ‘パスワード’;
    実行すると
    [vagrant@localhost mysql_lessons]$ mysql -u root -p < create_myapp.sql
    Enter password:
    ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES) となります
    修正方法をお教え願えませんか?
    また最初にmysql -u rootで接続できるようにするにはどうすればいいですか?
    よろしくお願いいたします

    返信
    • MySQLを初期化したらrootパスワードが生成されるのでそれで接続できるようになるとおもいます。
      $ sudo bin/mysqld –initialize –user=mysql

      そのあとcreate_myapp.sqlをroot権限で実行すれば処理がすすむのではないでしょうか。
      $ sudo mysql -u root -p < create_myapp.sql

      返信

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください