MySQL安装后的初始优化

时间:2022-05-26 10:25:35

 

mysql数据库在安装之后,有一些内置的库(test库)、用户(如root@localhost.localdomain)是不需要的,而且在Linux系统上,yum安装的mysql是默认无root密码的,这些都给数据库服务器的安全带来了隐患。
这篇文章就是介绍如何进行初始优化,把这些隐患消除掉,以及在root用户被禁止远程登陆的情况下创建普通用户用于局域网管理。

我们的操作环境是64位windows 7系统上面安装的mysql 5.5

 

关于MySQL数据的安装,可以参考:MySQL安装(Windows 7)

 

1、删除test库

1 C:\Users\Administrator>mysql -uroot -p123456
2 
3 
4 mysql> show databases;
5 
6 mysql> drop database test;

 

2、删除不使用的用户

在 Linux 系统上 yum 安装 mysql 时,直接使用 mysql 命令即可连接到 mysql,这是因为 mysql 的内置用户(用户名为空而且也没有密码)导致的。甚至 root 用户也没有密码,即使root用户不能进行远程连接,这也是不安全的。

 1 mysql> select user, host, password from mysql.user;
 2 +------+-----------------------+----------+
 3 | user | host                  | password |
 4 +------+-----------------------+----------+
 5 | root | localhost             |          |
 6 | root | localhost.localdomain |          |
 7 | root | 127.0.0.1             |          |
 8 |      | localhost             |          |
 9 |      | localhost.localdomain |          |
10 +------+-----------------------+----------+
11 5 rows in set (0.00 sec)

 

首先,把用户名为空的用户删除

 

mysql> delete from mysql.user where user = '';

 

然后,把root@localhost.localdomain用户删除

 

mysql> delete from mysql.user where host = 'localhost.localdomain';

 

然后,为 root 用户设置密码

 

mysql> update mysql.user set password = password('123456');

 

也可以在命令行使用 mysqladmin 命令设置密码:mysqladmin -u root password '123456'


查看一下

 

1 mysql> select user, host, password from mysql.user;
2 +------+-----------+-------------------------------------------+
3 | user | host      | password                                  |
4 +------+-----------+-------------------------------------------+
5 | root | localhost | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
6 | root | 127.0.0.1 | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
7 +------+-----------+-------------------------------------------+
8 2 rows in set (0.00 sec)

 

最后,刷新一下权限

 

mysql> flush privileges;

 

 

3、添加局域网管理用户

 

因为 root 已经被禁止了远程连接,即使是局域网主机,也不能连接。但是我们有需要从远程连接到mysql服务器进行管理。此时可以:

创建用户,允许从局域网主机连接,可以授予所有库、所有表的所有权限,也可以只授予某些库、某些表的某些权限。

 

我们通常的解决方案是:一个拥有所有权限的管理员用户(用户名密码只能几个核心管理者拥有,甚至可以把host设置在很小的范围内),管理不同库的多个普通用户(不同系统的管理者拥有,彼此尽量无交集)

下面我们看一下创建用户的语法:创建system用户,授予所有库、所有表的所有权限,允许局域网192.168.0网段主机连接,密码是123456

 

 1 mysql> GRANT ALL ON *.* TO 'system'@'192.168.0.%' IDENTIFIED BY '123456';
 2 mysql> GRANT ALL ON *.* TO 'system'@'localhost' IDENTIFIED BY '123456';
 3 mysql> GRANT ALL ON *.* TO 'system'@'127.0.0.1' IDENTIFIED BY '123456';
 4 
 5 mysql> select user, host, password from mysql.user;
 6 +--------+--------------+-------------------------------------------+
 7 | user   | host         | password                                  |
 8 +--------+--------------+-------------------------------------------+
 9 | root   | localhost    | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
10 | root   | 127.0.0.1    | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
11 | system | 192.168.0.%  | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
12 | system | localhost    | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
13 | system | 127.0.0.1    | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
14 +--------+--------------+-------------------------------------------+
15 5 rows in set (0.00 sec)
16 
17 mysql> flush privileges;

 

从 192.168.0.10 主机进行远程连接

 

C:\Users\Administrator>mysql -usystem -p123456 -h 192.168.0.105

 

可以成功连接了

 

4、mysql命令主要选项

 

-?, --help 显示帮助
-D, --database=name 指定使用的数据库
--default-character-set=name

设置客户端连接编码

mysql -uroot -p123456 --default-character-set=gbk

-e, --execute=name

执行语句后退出,这个选项在编写shell脚本时很有用

mysql -uroot -p123456 --default-character-set=gbk -e "select * from test.t_user;"

-h, --host=name 连接主机名。默认loadlhost。在连接远程数据库时使用
-p, --password[=name] 密码,如果未指定这个选项,会在mysql命令行提示输入
-P, --port=# 服务端口,默认3306
-S, --socket=name 连接使用的socket文件
-u, --user=name 连接使用的用户
-V, --version 输出版本信息
--connect-timeout=# 连接超时时长,单位为秒

 

 

 

 

 

 

 

 

 

 

 

 

你好你好你好你好你好

你好你好你好

 

5、help命令

 

MySQL 的官方文档非常全面,即使您没有 MySQL 相关经验,只要有一定的 SQL、DOS/Linux 命令行基础,就可以根据官方文档学习 MySQL 的核心命令和 SQL 语法了。

在 mysql 控制台里面,可以使用 help 来查看帮助,如:查看 create 的帮助可以使用 help create 语句、查看删除表的帮助可以使用 help drop table 语句......