[MySQL] - MySQL 允许远程访问/添加新用户

MySQL 登录

刚安装的 MySQL,可以使用 mysql -uroot -p 进行登录。

以 Docker 构建的 MySQL 为例,初始化密码为空,直接按回车键即可进入 mysql 命令行。

root@9f2b592a91bc:/# mysql -uroot -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.16 MySQL Community Server - GPL

初始化账户

刚刚安装的 MySQL,其中 root 用户是不允许远程访问的,如果你想要通过第三方软件,比如 Navicat 连接,需要进行一些修改。

第一步,切换到 mysql 这个系统数据库。

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)

mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> 

第二步,查看用户表:

mysql> select host,user,authentication_string from user;
+-----------+------------------+------------------------------------------------------------------------+
| host      | user             | authentication_string                                                  |
+-----------+------------------+------------------------------------------------------------------------+
| localhost | mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSEE |
| localhost | mysql.session    | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSEE |
| localhost | mysql.sys        | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSEE |
| localhost | root             |                                                                        |
+-----------+------------------+------------------------------------------------------------------------+
4 rows in set (0.00 sec)

mysql> 

host 字段即允许用户访问的主机类型

localhost 即只允许本地访问,如果希望可以远程访问,那么需要将这个字段改成 %

authentication_string 字段即用户的登录密码

在这里我们不直接修改 root,而是创建一个新的用户出来,以后远程登录 MySQL 也不会使用 root。

执行如下命令,创建一个新的用户:

mysql> create user "idce"@"%" identified by "idce12345";
Query OK, 0 rows affected (0.01 sec)

上述命令创建了一个用户名为 idce 密码为 idce12345 且权限为允许任何主机访问的新用户。

接着,需要更新权限使其生效。

执行命令:

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.02 sec)

这条命令即更新用户表的权限,接下来我们就可以使用新用户登录 MySQL 了。

数据库授权

上面的步骤创建了一个可以远程登录的用户,但是它没有任何数据库的权限。

现在,我们创建一个新的数据库:

mysql> create database test DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_general_ci;
Query OK, 1 row affected (0.01 sec)

然后授予刚刚创建的用户这个库的所有权限:

mysql> grant all privileges on `test`.* to 'idce'@'%';
Query OK, 0 rows affected (0.01 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

test.* 指的是 test 这个数据库的所有表。

到这一步就完全 OK 了。

讨论

还没有人评论~