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

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

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

1、删除test库

 C:\Users\Administrator>mysql -uroot -p123456

 mysql> show databases;

 mysql> drop database test;

2、删除不使用的用户

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

 mysql> select user, host, password from mysql.user;
+------+-----------------------+----------+
| user | host | password |
+------+-----------------------+----------+
| root | localhost | |
| root | localhost.localdomain | |
| root | 127.0.0.1 | |
| | localhost | |
| | localhost.localdomain | |
+------+-----------------------+----------+
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('');

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

查看一下

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

最后,刷新一下权限

mysql> flush privileges;

3、添加局域网管理用户

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

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

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

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

 mysql> GRANT ALL ON *.* TO 'system'@'192.168.0.%' IDENTIFIED BY '';
mysql> GRANT ALL ON *.* TO 'system'@'localhost' IDENTIFIED BY '';
mysql> GRANT ALL ON *.* TO 'system'@'127.0.0.1' IDENTIFIED BY ''; mysql> select user, host, password from mysql.user;
+--------+--------------+-------------------------------------------+
| user | host | password |
+--------+--------------+-------------------------------------------+
| root | localhost | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| root | 127.0.0.1 | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| system | 192.168.0.% | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| system | localhost | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| system | 127.0.0.1 | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
+--------+--------------+-------------------------------------------+
5 rows in set (0.00 sec) 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 语句......

MySQL安装后的初始优化的更多相关文章

  1. Mysql安装、配置、优化

    MYSQL定义 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle旗下产品.MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最 ...

  2. [Mysql] 安装后启动不了

    Mysql安装后启动报错: ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql ...

  3. mysql安装后服务启动不了(总结)

    mysql安装后服务启动不了 1.1 前言 最近真的是倒霉到家,装个mysql都能把所有的问题给问候了一遍······不过这也是一个宝贵的经验,得好好总结下,毕竟也不知道以后会不会再次遇到.如果有网友 ...

  4. 关于mysql安装后在客户端cmd插入语句无法执行的问题

    关于mysql安装后在客户端cmd插入语句无法执行的问题 因为windows cmd默认字符集是gbk,当character_set_client=utf8时,cmd中出现中文会报错:characte ...

  5. mysql安装后开启远程

    操作系统为centos7 64 1.修改 /etc/my.cnf,在 [mysqld] 小节下添加一行:skip-grant-tables=1 这一行配置让 mysqld 启动时不对密码进行验证 2. ...

  6. mysql安装后服务启动不了

    1.1 前言 最近真的是倒霉到家,装个mysql都能把所有的问题给问候了一遍······不过这也是一个宝贵的经验,得好好总结下,毕竟也不知道以后会不会再次遇到.如果有网友也能像我这样倒霉,但是能够幸运 ...

  7. 解决mac 下mysql安装后root用户登录密码错误问题

    使用的mac OS 10.11  安装mysql后访问root/root用户失败,网上找了一些解决办法,下面记录下解决方法方便以后自己查询 概述(看懂下面就不用看了): 停服务:sudo /usr/l ...

  8. MySQL安装后默认自带数据库的作用

    大家在学习MySQL时,安装后都会发现里边已经自带了几个默认的数据库,我装的MySQL5.5里边自带六个数据库 网上查了一些资料对这几个数据库的功能做一下学习. 1.information_schem ...

  9. Mysql安装后在服务里找不到和服务启动不起来的解决方法

    一,在安装完Mysql数据库后,发现在控制面板->管理->服务中找不到Mysql的服务启动 解决方法如下:开启命令行,按照如下步骤即可: 1.进入到mysql的安装包,在bin里执行:my ...

随机推荐

  1. element ui 怎么去修改el-date-picker的时间

    <el-date-picker v-model="formSearch.timeRange" type="daterange" placeholder=& ...

  2. ssh修改默认远程端口

    ---------------------centos6-----------------1.查看系统版本cat /etc/redhot-releose 2.编辑sshd配置,修改默认的端口vim / ...

  3. Mybatis(下)

    Mybatis(下) 一.MaBatis核心配置文件 Mybatis 中文文档 Mybatis 中文文档 1. properties 定义属性及读取属性文件,取的时候用 $(name) ,name 为 ...

  4. 团队作业-Beta冲刺(1/4)

    队名:软工9组 组长博客:https://www.cnblogs.com/cmlei/ 作业博客:https://edu.cnblogs.com/campus/fzu/SoftwareEngineer ...

  5. Git提交(PUSH)时记住密码 - 不用每次都输入密码

    开发使用的团队搭建好的GitLab服务器来作为项目共享开发,由于我不是最高权限,没办法把我git生成的SSH-Key放到服务器里面去,所有只好在每次提交的时候配置git config来记录密码不过期来 ...

  6. Java_jdbc 基础笔记之七 数据库连接(方法升级)

    之前的更新方法 public static void update(String sql) { Connection conn = null; Statement statement = null; ...

  7. freeNAS nfs linux挂载

    新建存储块,设置权限为root wheel 备份修改/var/lib/nova 名称 新建/var/lib/nova 目录,修改目录的属主机权限 mv /var/lib/nova /var/lib/n ...

  8. # 61条面向对象设计的经验原则-《OOD启思录》Arthur J.Riel

    61条面向对象设计的经验原则-<OOD启思录>Arthur J.Riel 原文 http://blog.csdn.net/cpluser/article/details/129291 61 ...

  9. np.meshgrid

  10. Python装饰器之functools.wraps的作用

    # -*- coding: utf-8 -*- # author:baoshan def wrapper(func): def inner_function(): pass return inner_ ...