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. rabbitmq添加user及vhost

    rabbitmqctl add_vhost /myhost # 添加 vhost rabbitmqctl add_user me me123 # 设置用户和密码 rabbitmqctl set_per ...

  2. java.lang.NumberFormatException: Infinite or NaN原因之浮点类型除数为0结果探究

    背景 在对Double类型的数据进行计算操作,将结果转化为BigDecimal时抛出了下面的异常,进行了Debug才发现了问题原因,同时也暴露出了自己在一些基础知识上还有些欠缺. Exception ...

  3. 2019软工实践_Alpha(4/6)

    队名:955 组长博客:https://www.cnblogs.com/cclong/p/11882079.html 作业博客:https://edu.cnblogs.com/campus/fzu/S ...

  4. MYSQL事务的开启与提交

    MYSQL 事务处理主要有两种方法: 1.用 BEGIN, ROLLBACK, COMMIT来实现 BEGIN 开始一个事务 ROLLBACK 事务回滚 COMMIT 事务确认 2.直接用 SET 来 ...

  5. ora-8176原因及解决方法

    在oracle undo_retention范围内,且_undo_autotune=false的情况下,一个语句执行的时候仍然发生ora-8176,语句如下: INSERT INTO XXX SELE ...

  6. Linux云主机(离线)搭建本地yum源

    下载CentOS镜像 http://mirror.nsc.liu.se/centos-store/7.3.1611/isos/x86_64/ 离线yum源的配置 1.上传下载的镜像源iso 2.挂载i ...

  7. LODOP表格table简短问答及相关博文

    LODOP打印表格超文本输出表格:ADD_PRINT_HTML.ADD_PRINT_HTM.ADD_PRINT_TABLE.ADD_PRINT_TBURL打印表格带页头页尾 参考样例15 http:/ ...

  8. [LeetCode] 219. Contains Duplicate II 包含重复元素 II

    Given an array of integers and an integer k, find out whether there are two distinct indices i and j ...

  9. MiniProfiler 来分析 ASP.NET Core

    使用 MiniProfiler 来分析 ASP.NET Core 应用   使用 MiniProfiler 来分析 ASP.NET Core 应用 MiniProfiler(https://minip ...

  10. 移动测(APP)试与web端测试的区别

    1.操作环境不同 移动端的测试环境是安卓操作环境或者iOS操作系统: web端操作环境一般是windows(如果你用的是MC电脑,那就是iOS操作系统). 2.页面的显示尺寸不同 移动端的尺寸比较多, ...