mysql-5.7.24二进制包安装

介绍

MySQL 是最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS(Relational Database Management System:关系数据库管理系统)应用软件之一。

安装

下载地址:https://dev.mysql.com/downloads/mysql/

安装步骤:

  1. 下载解压,进入到目录中
  2. 创建数据目录,配置目录,日志目录和配置文件,修改配置文件
  3. 初始化数据库和启动数据库
  4. 配置开机自启动
  5. 常见错误

下载解压,改名

1
2
3
4
5
6
7
8
9
10
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.27-el7-x86_64.tar

tar xf mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz -C /data/

cd /data
mv mysql-5.7.24-linux-glibc2.12-x86_64/ mysql-5.7.24

# data目录:用于存放数据,logs目录:存放日志和PID文件d
cd mysql-5.7.24/
mkdir data logs

创建需要的目录和文件

1
2
vim /etc/my.cnf
# 修改
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# *** DO NOT EDIT THIS FILE. It's a template which will be copied to the
# *** default location during install, and will be replaced if you
# *** upgrade to a newer version of MySQL.
[client]
port = 3306
default-character-set=utf8

[mysqld]
# 一般配置选项
basedir = /data/mysql-5.7.24
datadir = /data/mysql-5.7.24/data
log-error=/data/mysql-5.7.24/logs/error.log
port = 3306
character-set-server=utf8
default_storage_engine = InnoDB

binlog-format=Row
log-bin=/data/mysql-5.7.24/logs/binlog/binlog
server-id=1

slow_query_log=ON
slow_query_log_file=/data/mysql-5.7.24/logs/mysql-slow.log
long_query_time=1

sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

授权

1
2
useradd -r -s /sbin/nologin mysql
chown -R mysql:mysql /data/mysql-5.7.24

初始化数据库和启动

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
cd /data/mysql-5.7.24/bin/

#初始化数据库
./mysqld --user=mysql --basedir=/data/mysql-5.7.24 --datadir=/data/mysql-5.7.24/data --initialize

# 启动脚本
cp ../support-files/mysql.server /etc/init.d/mysqld
vim /etc/init.d/mysqld
# 修改
basedir=/data/mysql-5.7.24
datadir=/data/mysql-5.7.24/data

#启动
service mysqld start

配置开机自启动

1
2
chkconfig mysqld on
chkconfig --list mysqld

设置密码,远程登录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#默认密码
cat /data/mysql-5.7.24/logs/error.log |grep root@localhost

# 登录
./mysql -u root -p

#密码修改为 aaa
mysql> set password=password("123123");

#设置远程登录权限
mysql> grant all privileges on *.* to 'root'@'%' identified by '123123';

#刷新登录权限:
mysql> flush privileges;

#远程登录
./mysql -u root -p -P3306 -h192.168.1.23

重新设置root密码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# 停止mysql
service mysql stop

# 跳过root密码启动mysql
mysqld --skip-grant-tables

# 直接登录mysql
mysql> use mysql

# 修改root密码
mysql> update user set password=password("12345") where user="root";

# 刷新权限
mysql> flush privileges;

# 退出
mysql> exit

# 退出--skip-grant-tables模式,重启mysql
service mysql restart

# 正常登录mysql
mysql -uroot -p12345 -h 127.0.0.1

# 重新设置root密码,否则无法使用
mysql> SET PASSWORD = PASSWORD('12345');

备份和恢复

备份

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 导出数据库中所有表结构;只导出表结构, 不导出表中的数据
mysqldump --opt -d 数据库名称 -u用户名 -p密码 > 保存文件路径

# 导出数据库中所有表中的数据;只导出表中的数据,不导出表结构
mysqldump -t 数据库名称 -u用户名 -p密码 > 保存文件路径

# 导出数据库中所有的表结构和数据;导出表结构和数据
mysqldump 数据库名称 -u用户名 -p密码 > 保存文件路径

# 备份单个库,并压缩
mysqldump -uroot -p123123 --database xxl_job | gzip > ./xxl_job.sql.gz

# 导出指定表的结构和数据
mysqldump -u用户名 -p密码 -B 数据库名称 --table 表名 > 保存文件路径

# 导出指定表数据,只导出数据,不导出表结构
mysqldump -t 数据库名称 -u用户名 -p密码 --table 表名 > 保存文件路径

恢复

1
2
# 将备份文件导入到数据库
mysql -u用户名 -p密码 数据库名称 < 用于恢复数据库的数据文件路径

常见错误

安装mysql报错

1
2
3
4
5
6
#报错内容
bin/mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
#由于缺少依赖包,通过yum安装libaio包

#安装libaio
yum -y install libaio

启动mysql报错

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#启动mysql报错内容
line 647: /var/log/mariadb/mariadb.log: No such file or directory
2018-04-06T16:59:36.091735Z mysqld_safe error: log-error set to '/var/log/mariadb/mariadb.log', however file don't exists. Create writable for user '2iuser'.
bin/mysqld_safe: line 144: /var/log/mariadb/mariadb.log: No such file or directory

#当前系统中安装了mariadb,mariadb的配置文件路径/etc/my.cnf,mysql根据配置文件无法找到相关的文件,所以报错。
#查找mariadb,删除mariadb。
rpm -qa | grep mariadb
rpm -e mariadb-libs-5.5.56-2.el7.x86_64

#在启动命令中加上--defaults-file参数指定配置文件
bin/mysqld_safe \
--defaults-file=/data/mysql/conf/my.cnf \
--user=mysql &

登陆mysql报错

1
2
3
4
5
6
7
8
9
#登陆报错内容
Enter password:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

#其中一种解决方法是在命令行里指定sock文件即可登陆,由于本机已安装mysql数据库,sock文件在/tmp/mysql.sock已存在,所以建议这种方式登录,后续再想办法优化。
./mysql -u root -p -S /data/mysql/conf/mysql.sock

#由于mysql是在路径/tmp/mysql.sock寻找sock文件,我们配置文件里指定的路径是/data/mysql/conf/mysql.sock,所以加上软连接即可。
ln -s /data/mysql/conf/mysql.sock /tmp/mysql.sock

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!