これは、匿名アカウントなのか


mysqlで

[code]

    mysql -u -p
    
[/code]

と接続すればuserは、

[code]

    MariaDB [(none)]> select user();
    +--------------+
    | user()       |
    +--------------+
    | -p@localhost |
    +--------------+
    1 row in set (0.00 sec)
    
[/code]

となりますし、  
`mysql`  
と接続すればuserは、

[code]

    MariaDB [(none)]> select user();
    +----------------+
    | user()         |
    +----------------+
    | ***(※microsoftのアカウント名)@localhost |
    +----------------+
    1 row in set (0.00 sec)
    
[/code]

となります。

またこれらのようなアカウントに見覚えがないので、-p@localhost(`current_user()`を実行するとなぜか「@localhost」となる)の状態でmysql.userを見ようとすると

[code]

    MariaDB [(none)]> select user,host,password from mysql.user;
    ERROR 1142 (42000): SELECT command denied to user ''@'localhost' for table 
    'user'
    MariaDB [(none)]> exit;
    Bye
    
[/code]

テーブル上にそんなユーザーは存在しない,というエラーがでてしまいます。***(※microsoftのアカウント名)@localhostでも同じです。

rootでやるとエラーが出ずに正常です。

[code]

    MariaDB [(none)]> select user,host,password from mysql.user;
    +------+-----------+-------------------------------------------+
    | user | host      | password                                  |
    +------+-----------+-------------------------------------------+
    | root | localhost | ***************************************** |
    | root | 127.0.0.1 | **********                                |
    | root | ::1       | **********                                |
    |      | localhost |                                           |
    | pma  | localhost |                                           |
    +------+-----------+-------------------------------------------+
    5 rows in set (0.00 sec)
    
[/code]

いづれもcurrent_userすると「@localhost」となるので恐らく匿名アカウントだと思いますがあっておりますか。  
恐らくuserが空っぽのやつに接続しているのだと思いますが、これさえ削除すればこのようなでたらめな接続は、できなくなりますか。




>
[code]

>     MariaDB [(none)]> select user,host,password from mysql.user;
>     +------+-----------+-------------------------------------------+
>     | user | host      | password                                  |
>     +------+-----------+-------------------------------------------+
>     | root | localhost | ***************************************** |
>     | root | 127.0.0.1 | **********                                |
>     | root | ::1       | **********                                |
>     |      | localhost |                                           |
>     | pma  | localhost |                                           |
>     +------+-----------+-------------------------------------------+
>     5 rows in set (0.00 sec)
>  
[/code]

4行目のユーザーが匿名ユーザーです。基本匿名ユーザーを必要とする場面はないので、削除してください。これを含めて基本的に考慮すべきセキュリティはマニュアルに記載されています。

<https://dev.mysql.com/doc/refman/5.6/ja/default-privileges.html>

* * *

匿名ユーザーは、接続時に指定されたユーザーが存在しない場合に割り当てられるユーザーです。

>
[code]

>     mysql -u -p
>  
[/code]

これは`-p`というユーザーで接続しようとしていますが、MySQL上に`-p`というユーザーが存在しないので、匿名ユーザーが割り当てられます。

`mysql`コマンドでユーザーを指定しない場合に匿名ユーザーで接続される **わけではありません**
。`mysql`コマンドでユーザーを指定しない場合、大抵の環境ではOSのユーザー名が使われます。MySQLに同名のユーザーが存在すれば当然そちらが使われます。同名のユーザーが存在しない場合に匿名ユーザーが割り当てられます。

>
[code]

>     MariaDB [(none)]> select user,host,password from mysql.user;
>     ERROR 1142 (42000): SELECT command denied to user ''@'localhost' for
> table 'user'
>  
[/code]

>
> テーブル上にそんなユーザーは存在しない,というエラーがでてしまいます

違います。匿名アカウントが`mysql.user`テーブルにアクセスする権限がないためはじかれています。




>
[code]

>     MariaDB [(none)]> select user,host,password from mysql.user;
>     +------+-----------+-------------------------------------------+
>     | user | host      | password                                  |
>     +------+-----------+-------------------------------------------+
>     | root | localhost | ***************************************** |
>     | root | 127.0.0.1 | **********                                |
>     | root | ::1       | **********                                |
>     |      | localhost |                                           |
>     | pma  | localhost |                                           |
>     +------+-----------+-------------------------------------------+
>     5 rows in set (0.00 sec)
>  
[/code]

4行目のユーザーが匿名ユーザーです。基本匿名ユーザーを必要とする場面はないので、削除してください。これを含めて基本的に考慮すべきセキュリティはマニュアルに記載されています。

<https://dev.mysql.com/doc/refman/5.6/ja/default-privileges.html>

* * *

匿名ユーザーは、接続時に指定されたユーザーが存在しない場合に割り当てられるユーザーです。

>
[code]

>     mysql -u -p
>  
[/code]

これは`-p`というユーザーで接続しようとしていますが、MySQL上に`-p`というユーザーが存在しないので、匿名ユーザーが割り当てられます。

`mysql`コマンドでユーザーを指定しない場合に匿名ユーザーで接続される **わけではありません**
。`mysql`コマンドでユーザーを指定しない場合、大抵の環境ではOSのユーザー名が使われます。MySQLに同名のユーザーが存在すれば当然そちらが使われます。同名のユーザーが存在しない場合に匿名ユーザーが割り当てられます。

>
[code]

>     MariaDB [(none)]> select user,host,password from mysql.user;
>     ERROR 1142 (42000): SELECT command denied to user ''@'localhost' for
> table 'user'
>  
[/code]

>
> テーブル上にそんなユーザーは存在しない,というエラーがでてしまいます

違います。匿名アカウントが`mysql.user`テーブルにアクセスする権限がないためはじかれています。

