0x00 前言
MySQL是一款开源的关系型数据库管理系统,大量公司都在使用它,或是在它的基础上做二次开发。有时,我们会需要在Linux系统上部署MySQL服务用于测试。
本文是根据网上的经验分享以及亲自实践的过程总结而来。实验环境为:Ubuntu 16.04 x64。
0x01 安装MySQL服务端和客户端
apt install mysql-server -y
apt install mysql-client -y
安装mysql-server
过程中会提示输入root
用户密码。
查看mysql版本:
$ mysqld --version
mysqld Ver 5.7.22-0ubuntu0.16.04.1 for Linux on x86_64 ((Ubuntu))
使用netstat -an | grep 3306
命令测试服务是否安装成功:
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN
0x02 修改配置文件
mysql默认监听的是回环地址,如果要改为监听全局地址,可以修改mysql的配置文件:/etc/mysql/mysql.conf.d/mysqld.cnf
,默认配置如下:
[mysqld]
#
# * Basic Settings
#
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
lc-messages-dir = /usr/share/mysql
skip-external-locking
#
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address = 127.0.0.1
注释掉以下行就可以监听全局地址:
#bind-address = 127.0.0.1
以下行可以修改监听端口:
port = 13306
修改默认编码为:utf8
,在[mysqld]
下新增以下行:
collation-server = utf8_unicode_ci
init-connect='SET NAMES utf8'
character-set-server = utf8
重启mysql服务:systemctl restart mysql
,确认配置生效
确认编码是否生效的方法是通过mysql -u root -p
进入mysql命令行后,使用SHOW VARIABLES LIKE "character_set_server";
确认。
mysql> SHOW VARIABLES LIKE "character_set_server";
+----------------------+-------+
| Variable_name | Value |
+----------------------+-------+
| character_set_server | utf8 |
+----------------------+-------+
1 row in set (0.01 sec)
0x03 创建用户和数据库
为了安全性,一般不使用root
帐号登录,可以创建子用户登录。
使用mysql -u root -p
命令进入mysql命令行,输入以下命令创建用户。
CREATE USER 'username'@'host' IDENTIFIED BY 'password';
username
:新创建的用户名host
:指定该用户在哪个主机上可以登陆,如果是本地用户可用localhost,如果想让该用户可以从任意远程主机登陆,可以使用通配符%
password
:该用户的登录密码,密码可以为空,如果为空则该用户可以不需要密码登录服务器
此时,该用户还没有对应的数据库,可以使用以下命令创建:
CREATE DATABASE database character set utf8;
然后授予用户访问权限:
GRANT privileges ON database.table TO 'username'@'host'
privileges
:用户的操作权限,如SELECT
,INSERT
,UPDATE
等,如果要授予所的权限则使用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
软件访问,全部可视化操作,非常方便。