MYSQL创建新用户并赋于权限

为应用程序创建特定的用户特定的数据库,不要直接使用root用户直接在应用程序中执行数据库操作,如果条件允许请将root用户设置为禁止远程登录,以提高系统的安全性,通常情况下,在开发或测试时可以将环境中的MYSQL设置为允许远程登录,以提高开发或上线效率,生产环境下是严禁MYSQL数据库远程登录的,应用程序应该通过内部网络进行通信完成数据的相关操作。特定的用户只对特定数据库有权限,退一万步讲,即使特定用户的密码被破解,也不会对同一节点下的数据库造成什么影响,还有千万不要使用弱口令,下文中的 helloworld 是演示说明使用,可以忽略不计~

Step1.以root用户登录MYSQL

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
$ mysql -u root -p                        
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 16
Server version: 8.0.23 MySQL Community Server - GPL

Copyright (c) 2000, 2021, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

Step2.选择mysql数据库

使用 use 选择 mysql 数据库。

1
2
3
4
5
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

Step3.创建用户并设定密码

创建一个用户名为 gitea 的用户,并且设置密码为 helloworld 。请注意这里的百分号 % 是允许 gitea 用户远程登录。如果不想允许 gitea 用户远程登录请将百分号 % 替换为 localhost 或 127.0.0.1。

1
2
mysql> create user 'gitea'@'%' identified by 'helloworld';
Query OK, 0 rows affected (0.01 sec)

Step4.为用户创建数据库

这里假定要为这个 gitea 用户,指定一个专属的数据库进行数据的存储,如 gitea,不要搞混了,这里的数据库名也为 gitea,即 gitea 用户,只能操作 gitea 数据库,执行下面的语句进行创建:

1
2
mysql> create database if not exists gitea;
Query OK, 1 row affected (0.00 sec)

Step5.为用户创建操作数据库所有权限

这里为 gitea 用户,指定操作 gitea 数据库的全部权限。更多权限的细化设置请参考 grant 命令。

1
2
mysql> grant all on gitea.* to 'gitea'@'%';
Query OK, 0 rows affected (0.01 sec)

退出登录。添加用户并赋于操作某个数据库权限已完成,可以使用新创建的用户登录进行验证。

Step6.退出root用户

1
2
mysql> exit
Bye

Step7.使用新用户gitea登录MSYQL

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
$ mysql -u gitea -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 17
Server version: 8.0.23 MySQL Community Server - GPL

Copyright (c) 2000, 2021, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

Step8.查看所有数据库

1
2
3
4
5
6
7
8
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| gitea              |
| information_schema |
+--------------------+
2 rows in set (0.00 sec)

Step9.查看所有权限

1
2
3
4
5
6
7
8
mysql> show grants for gitea;
+--------------------------------------------------+
| Grants for gitea@%                               |
+--------------------------------------------------+
| GRANT USAGE ON *.* TO `gitea`@`%`                |
| GRANT ALL PRIVILEGES ON `gitea`.* TO `gitea`@`%` |
+--------------------------------------------------+
2 rows in set (0.00 sec)
comments powered by Disqus