Jiahonzheng's Blog

Ubuntu 16.04 下 MySQL 的安装与配置

字数统计: 937阅读时长: 3 min
2017/09/29 Share

更新 Package List

在安装 MySQL 之前,我们先对系统的 package list 进行更新。

1
sudo apt-get update

安装 MySQL

1
sudo apt-get install mysql-server mysql-client libmysqlclient-dev

运行命令期间,需输入并设置密码,请牢记密码。

安装好以上软件包后,可使用如下命令查询 MySQL 是否安装成功:

1
sudo netstat -tap | grep mysql

当结果如下图所示时,表示安装成功:

网络不给力哦

温馨提示:上图中的 6121 可以为其他数字。

设置远程访问

修改配置文件

编辑 MySQL 配置文件,将其中 bind-address = 127.0.0.1 注释,使其失效

1
sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf

bind-address = 127.0.0.1 行头添加 #,如下图所示:

网络不给力哦

开启远程访问权限

进入 MySQL 命令行(需要输入密码),开启用户远程访问权限

1
mysql -u root -p

输入以上命令后,Terminal 会提示输入密码,即之前提及到的密码。本实例中所使用的账号为 root ,密码为 123456

成功进入 MySQL 命令行后,进入 mysql database 中:

1
2
3
use mysql;
grant all on *.* to 'root'@'%' identified by '123456' with grant option;
flush privileges;

执行完以上命令后,退出 MySQL 命令行:

1
exit;

重启 MySQL 服务

1
sudo /etc/init.d/mysql restart

重启成功后,可在其他计算机上,使用 Navicat 访问本机 MySQL 数据库,测试远程访问设置是否成功。

阿里云上的额外设置

在阿里云平台上,设置 MySQL 远程访问时,需要在 本实例安全组 页面下,点击 配置规则 ,随即点击 快速添加规则 ,添加如下配置:

网络不给力哦

本示例,设置为 任意 IP 均可访问 MySQL,可自行设置特定 IP 地址。

设置编码格式

MySQL 命令行下,我们可使用以下命令查看当前编码格式:

1
show variables like '%character%';

默认情况下,编码格式并不是 utf-8 等常用编码格式 ,为了更改地使用数据库,我们需要对其进行更改。

我们可以通过修改配置文件,实现编码格式的更改。在本示例中,我们将设置为 utf8mb4

修改配置文件

配置文件为 /etc/mysql/mysql.conf.d/mysqld.cnf ,使用 vim 修改。

[client] 下追加:

1
default-character-set = utf8mb4

[mysql] 下追加:

1
default-character-set = utf8mb4

[mysqld] 下追加

1
2
3
4
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect = 'SET NAMES utf8mb4'

最终配置如下图:

网络不给力哦

重启 MySQL 服务

1
sudo /etc/init.d/mysql restart

进入命令行,查看当前编码格式,验证编码格式是否安装成功。

设置 wait_timeoutinteractive_timeout

参数解释

wait_timeout

参数含义:服务器关闭非交互连接之前等待活动的秒数。

参数默认值:28800秒 = 8小时

interactive_timeout

参数含义:服务器关闭交互式连接前等待活动的秒数。

参数默认值:28800秒 = 8小时

参数设置

MySQL 所支持的最大连接数是存在上限的,每个连接的建立都需要消耗一定的内存。倘若没有设置恰当的 wait_timeoutinteractive_timeout ,则可能因闲置连接数太多,达到 MySQL 连接数上限,而出现 too many connections 的错误,这个问题也被称为 “8小时问题”。

查阅相关的技术博客,发现在命令行下只有通过修改 interactive_timeout 的配置,才能实现 wait_timeout 的配置,即单独修改 wait_timeout 的配置是无效的。

MySQL 命令行下,可用以下命令查看当前 wait_timeoutinteractive_timeout 的配置:

1
show variables like '%timeout%';

可通过以下命令设置 wait_timeoutinteractive_timeout

1
set global interactive_timeout = 100;

在以上示例中,我们将 interactive_timeout 设置为 100 秒 , 退出当前 MySQL 命令行,再重新进入,查看 timeout 类型的变量,即可发现 wait_timeoutinteractive_timeout 均被配置为 100 秒。

CATALOG
  1. 1. 更新 Package List
  2. 2. 安装 MySQL
  3. 3. 设置远程访问
    1. 3.1. 修改配置文件
    2. 3.2. 开启远程访问权限
    3. 3.3. 重启 MySQL 服务
    4. 3.4. 阿里云上的额外设置
  4. 4. 设置编码格式
    1. 4.1. 修改配置文件
    2. 4.2. 重启 MySQL 服务
  5. 5. 设置 wait_timeout 与 interactive_timeout
    1. 5.1. 参数解释
      1. 5.1.1. wait_timeout
      2. 5.1.2. interactive_timeout
    2. 5.2. 参数设置