引言

Linux上的操作可以说是后台程序员的基本功之一,这次我们来讨论在Linux上的MySQL常用操作。

安装

安装之前可以启动服务看本机是否已经安装过MySQL

1
service mysqld start

删除操作不在本文的讨论内容中,如果服务启动成功或者提示服务已经启动,可以停止服务然后跳到下一步配置操作

1
service mysqld stop

安装(yum命令自动从网上寻找mysql服务资源,下载至本地并完成安装,安装过程中无脑yes就行)

1
yum -y install mysql-server

同时也可以采用自己下载安装包安装的方式,但是比较繁琐,本文不再讨论

配置

my.cnf是linux系统中MySQL的配置文档,使用mysql --help | grep 'my.cnf'命令即可查看MySQL启动时读取配置文件的默认目录

1
2
3
mysql --help | grep 'my.cnf'
order of preference, my.cnf, $MYSQL_TCP_PORT,
/etc/mysql/my.cnf /etc/my.cnf ~/.my.cnf

从上面可以清楚地看到,/etc/mysql/my.cnf、/etc/my.cnf以及~/.my.cnf这些文件就是MySQL启动时默认会依次读取的配置文件,并且顺序排前的优先

在本机查询出来就是当前系统中默认配置文件的位置,读者需注意自己本机显示的顺序,然后找到对应的位置修改文件

在笔者的机器中是/etc/my.cnf,所以可以直接使用vi进行编辑

1
vi /etc/my.cnf

在[mysqld]下加入skip-grant-tables可以跳过登录验证,不需要输入密码,之后设置好密码之后需要将此行删除或者注释。启动MySQL服务

1
service mysqld start

运行命令进入MySQL

1
mysql -u root -p

由于此时没有设置密码,要求你输入密码时直接回车跳过即可,设置密码之后每次都需要输入密码

1
2
3
4
mysql> 
use mysql;
update mysql.user set authentication_string=password('root_password') where user='root';
flush privileges;

上述命令中root_password就是设置的密码,读者可以根据自己的需要设置相应的密码,在MySQL命令行状态下,exit命令可以退出

1
mysql> exit

在此之后,只需要重启MySQL服务就可以使用自己设定的密码登录了(要注意去掉配置文件中的skip-grant-tables

1
service mysqld restart

开启binlog

在配置文件中进行如下修改(注意要关闭服务后修改再重启服务)

1
2
3
4
5
6
7
8
[mysqld]
# binlog config
# 为当前服务取一个唯一的 id(MySQL5.7 之后需要配置)
server-id = 1
# 这个参数表示启用 binlog 功能,并指定 binlog 的存储目录
log-bin = /var/lib/mysql/mysql-bin
# binlog采用的模式(STATEMENT/ROW/MIXED)
binlog-format = MIXED

重启服务后查看binlog开启是否成功,如下就是开启成功后的信息

1
2
3
4
5
6
7
8
9
10
11
12
mysql> SHOW VARIABLES LIKE '%log_bin%';
+---------------------------------+----------------------------------+
| Variable_name | Value |
+---------------------------------+----------------------------------+
| log_bin | ON |
| log_bin_basename | /www/server/data/mysql-bin |
| log_bin_index | /www/server/data/mysql-bin.index |
| log_bin_trust_function_creators | OFF |
| log_bin_use_v1_row_events | OFF |
| sql_log_bin | ON |
+---------------------------------+----------------------------------+
6 rows in set (0.00 sec)

导入

  1. 首先创建空数据库
1
mysql>create database abc;
  1. 导入数据库
1
2
3
4
5
6
7
8
# 指向创建的数据库
mysql>use abc;

# 设置编码
mysql>set names utf8;

# 导入数据(注意sql文件的路径)
mysql>source /home/abc/abc.sql;

导出

导出数据和表结构:

1
2
3
mysqldump -u用户名 -p密码 数据库名 > 数据库名.sql
# 例如: 路径:/usr/local/mysql/bin/ 命令:mysqldump -uroot -p abc > abc.sql
# 以上操作之后sql文件就存在/usr/local/mysql/bin/abc.sql中了

只导出表结构:

1
2
mysqldump -u用户名 -p密码 -d 数据库名 > 数据库名.sql
# 同上:/usr/local/mysql/bin/ mysqldump -uroot -p -d abc > abc.sql

参考

本文参考Linux安装MySQL(超详细)MySQL 的 binlog 的三种格式Linux系统MySQL如何导入数据库