为应用程序创建特定的用户特定的数据库,不要直接使用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用户
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)
|