Ubuntu 16.04 部署MySQL服务

0x00 前言

MySQL是一款开源的关系型数据库管理系统,大量公司都在使用它,或是在它的基础上做二次开发。有时,我们会需要在Linux系统上部署MySQL服务用于测试。

本文是根据网上的经验分享以及亲自实践的过程总结而来。实验环境为:Ubuntu 16.04 x64。

0x01 安装MySQL服务端和客户端

  1. apt install mysql-server -y
  2. apt install mysql-client -y
COPY

安装mysql-server过程中会提示输入root用户密码。

查看mysql版本:

  1. $ mysqld --version
  2. mysqld Ver 5.7.22-0ubuntu0.16.04.1 for Linux on x86_64 ((Ubuntu))
COPY

使用netstat -an | grep 3306命令测试服务是否安装成功:

  1. tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN
COPY

0x02 修改配置文件

mysql默认监听的是回环地址,如果要改为监听全局地址,可以修改mysql的配置文件:/etc/mysql/mysql.conf.d/mysqld.cnf,默认配置如下:

  1. [mysqld]
  2. #
  3. # * Basic Settings
  4. #
  5. user = mysql
  6. pid-file = /var/run/mysqld/mysqld.pid
  7. socket = /var/run/mysqld/mysqld.sock
  8. port = 3306
  9. basedir = /usr
  10. datadir = /var/lib/mysql
  11. tmpdir = /tmp
  12. lc-messages-dir = /usr/share/mysql
  13. skip-external-locking
  14. #
  15. # Instead of skip-networking the default is now to listen only on
  16. # localhost which is more compatible and is not less secure.
  17. bind-address = 127.0.0.1
COPY

注释掉以下行就可以监听全局地址:

  1. #bind-address = 127.0.0.1
COPY

以下行可以修改监听端口:

  1. port = 13306
COPY

修改默认编码为:utf8,在[mysqld]下新增以下行:

  1. collation-server = utf8_unicode_ci
  2. init-connect='SET NAMES utf8'
  3. character-set-server = utf8
COPY

重启mysql服务:systemctl restart mysql,确认配置生效

确认编码是否生效的方法是通过mysql -u root -p进入mysql命令行后,使用SHOW VARIABLES LIKE "character_set_server";确认。

  1. mysql> SHOW VARIABLES LIKE "character_set_server";
  2. +----------------------+-------+
  3. | Variable_name | Value |
  4. +----------------------+-------+
  5. | character_set_server | utf8 |
  6. +----------------------+-------+
  7. 1 row in set (0.01 sec)
COPY

0x03 创建用户和数据库

为了安全性,一般不使用root帐号登录,可以创建子用户登录。

使用mysql -u root -p命令进入mysql命令行,输入以下命令创建用户。

  1. CREATE USER 'username'@'host' IDENTIFIED BY 'password';
COPY

username:新创建的用户名
host:指定该用户在哪个主机上可以登陆,如果是本地用户可用localhost,如果想让该用户可以从任意远程主机登陆,可以使用通配符%
password:该用户的登录密码,密码可以为空,如果为空则该用户可以不需要密码登录服务器

此时,该用户还没有对应的数据库,可以使用以下命令创建:

  1. CREATE DATABASE database character set utf8;
COPY

然后授予用户访问权限:

  1. GRANT privileges ON database.table TO 'username'@'host'
COPY

privileges:用户的操作权限,如SELECTINSERTUPDATE等,如果要授予所的权限则使用ALL
database:数据库名
table:表名,如果要授予该用户对所有数据库和表的相应操作权限则可用*表示,如: *.*

0x04 常用操作

  • 查看当前已创建的数据库列表
    • SHOW DATABASES;
  • 查看用户列表
    • SELECT USER FROM mysql.user
  • 修改用户密码
    • SET PASSWORD for 'username'@'host' = password('password');
  • 导出.sql文件
    • mysqldump -h server -P port -u username -p database > backup.sql
  • 导入.sql文件
    • mysql -u username -p database < backup.sql
  • 获取慢查询列表
    • SELECT concat('kill ', id, ';') FROM information_schema.processlist WHERE Command != 'Sleep' AND Time > 300 ORDER BY Time DESC;

0x05 客户端访问

在服务器上一般使用mysql命令访问,在本地电脑上我一般使用MySQL-Front软件访问,全部可视化操作,非常方便。

分享

Gitalking ...