MySQL安装
MySQL官网 https://www.mysql.com
MySQL工程师的博客 https://dev.mysql.com
Planet MySQL https://planet.mysql.com
MySQL Bugs https://bugs.mysql.com
Worklog(类似工作日志) https://dev.mysql.com/worklog/
学习测试环境:Vagrant + VirtualBox + CentOS6
一、基础软件部署
MySQL5.6的安装,下面使用二进制安装过程,可以参考官方安装文档
1.1 下载
https://dev.mysql.com/downloads/mysql/
选择要下载的版本的链接
说明:
-
操作系统推荐Linux - Generic
-
当前时间20171002的5.6的最新版本是5.6.37
-
搜狐的镜像:http://mirrors.sohu.com/
# 镜像里5.6.36是最新的
http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz
# 先下载到本地再上传文件至服务器
rz -y
# 直接下载到服务器
wget https://cdn.mysql.com/Downloads/MySQL-5.6/mysql-5.6.37-linux-glibc2.12-x86_64.tar.gz
1.2 解压
帮助手册:https://dev.mysql.com/doc/refman/5.6/en/
# 推荐安装目录
/opt/mysql
# 创建目录
mkdir -p /opt/mysql
# 解压文件到/opt/mysql/目录下
tar -xzvf mysql-5.6.37-linux-glibc2.12-x86_64.tar.gz -C /opt/mysql/
# 查看解压后MySQL占用空间
du -sh *
# 查看mysqld大小
ls -lh bin/mysqld
# 删除链接用unlink
unlink /usr/local/mysql
# 建立链接
ln -s /opt/mysql/mysql-5.6.37-linux-glibc2.12-x86_64 /usr/local/mysql
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
1.3 创建用户
# 确保有mysql账户
id mysql
groupadd mysql
useradd -g mysql -s /sbin/nologin -M mysql
# 说明
-g<群组>:指定用户所属的群组
-s<shell>:指定用户登入后所使用的shell
-M:不要自动建立用户的登入目录
# 不建议用root用户跑mysql,推荐使用普通用户
1.4 环境变量
# 备份
cp /etc/profile{,.bak}
# 配置环境变量,并使配置生效
echo 'export PATH=/usr/local/mysql/bin:$PATH' >> /etc/profile
source /etc/profile
# 查看mysql都在哪
whereis mysql
which mysql
1.5 常用命令
mysql
mysqlbinlog
mysqld
mysqld_safe
perror
mysqldump
mysql_upgrade 小版本升级
/usr/local/mysql
二、启动起来
2.1 创建必须的目录
# 一般是项目名加端口号或直接端口号 eg:crm3306 or user3306 or yyms3376 or 3306
mkdir -p /data/mysql/mysql3306/{data,tmp,logs}
2.2 修改权限
# 权限
chown -R mysql:mysql /data/mysql/mysql3306
chown -R mysql:mysql /opt/mysql
chown -R mysql:mysql /usr/local/mysql
2.3 创建配置文件
# 配置文件
# /etc/my.cnf
# innodb_data_file_path=ibdata1:100M:autoextend 数据字典
my.cnf
[client]
port = 3306
socket = /tmp/mysql3306.sock
[mysqld]
# last ip + port
# server-id = 1003306
port = 3306
user = mysql
basedir = /usr/local/mysql
datadir = /data/mysql/mysql3306/data
tmpdir = /data/mysql/mysql3306/tmp
socket = /tmp/mysql3306.sock
log-bin = /data/mysql/mysql3306/logs/mysql-bin
log-error = /data/mysql/mysql3306/logs/error.log
slow-query-log-file = /data/mysql/mysql3306/logs/slow.log
skip-external-locking
skip-name-resolve
log-slave-updates
character-set-server = utf8
lower_case_table_names = 1
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# InnoDB
innodb_data_home_dir = /data/mysql/mysql3306/data
innodb_log_group_home_dir = /data/mysql/mysql3306/logs
innodb_data_file_path = ibdata1:100M:autoextend
[mysqld_safe]
# log-error = /data/mysql/mysql3306/error.log
# pid-file = mysqldb.pid
# malloc-lib = /usr/local/mysql/lib/mysql/libjemalloc.so
2.4 初始化
# 执行如下安装命令初始化,如果不指定配置文件,要切换到下面目录下执行安装命令
cd /usr/local/mysql
./scripts/mysql_install_db
# 说明
# 如果不指定配置文件位置,以/etc/my.cnf为默认配置文件
# 需要指定配置文件用--defaults-file参数来指定,如:
# ./scripts/mysql_install_db --defaults-file=/etc/my.cnf
# 看到2个OK就表示成功
# 如果提示缺少模块,请先安装基本工具包
yum groupinstall "Compatibility libraries" "Base" "Development tools" -y
2.5 启动关闭
# 启动,有n种方式,如下:
/etc/init.d/mysql start
/etc/init.d/mysql stop
service mysql start
service mysql stop
# 如下这种方式在启动时,可以指定其配置文件,默认是/etc/my.cnf
# 指定配置文件时用--defaults-file=/etc/my3306.cnf来指定
/usr/local/mysql/bin/mysqld_safe &
/usr/local/mysql/bin/mysqld &
# 如下是关闭mysql,如不指定sock文件,默认读取的是/tmp/mysql.sock
/usr/local/mysql/bin/mysqladimn -S /tmp/mysql3306.sock shutdown
2.6 安全加固
# 登录,此处的mysql为/usr/local/mysql/bin/mysql
mysql -uroot -S /tmp/mysql3306.sock
# 查看当前用户
select user, host, authentication_string from mysql.user;
select user, host, password from mysql.user;
# 删除多余账户及数据库、表
delete from mysql.user where user!='root' or host!='localhost';
# 对test的操作太宽范了
truncate table mysql.db;
drop database test;
# 更新root密码
update mysql.user set authentication_string = password('123456') where user='root';
# 刷新权限库
flush privileges
# 当前目录是/usr/local/mysql
./bin/mysql_secure_installation
2.7 确认MySQL启动
# 查看进程 ef与aux
ps -ef|grep -v "grep"|grep mysqld
# 查看监听
netstat -nalp|grep mysqld
ss -tnlp|grep mysqld
lsof -i :3306
# 看错误日志
tail -f /data/mysql/mysql3306/error.log
sftp
xftp
yum install lrzsz
screen
nohup
普通用户的资源限制
/etc/security/limits.conf