zoukankan      html  css  js  c++  java
  • MySQL安装后的初始优化

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

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

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

    1、删除test库

    1 C:UsersAdministrator>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:UsersAdministrator>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 语句......

  • 相关阅读:
    在小气的神的Blog上看到的一段Video
    一个在.net下进行用户模拟的类
    PDC每日视频
    今天才知有一个CollectionBase类,惭愧
    “EditandContinue”特性
    Codeforces Round #597 (Div. 2) A. Good ol' Numbers Coloring
    单据号生成
    JAR包
    框架之间传值
    Eclipse3.4发布 新特性展示
  • 原文地址:https://www.cnblogs.com/xugf/p/8711174.html
Copyright © 2011-2022 走看看