centos7安装mysql(yum)mysql
----安装环境
----依赖安装
----检查mysql是否已安装
----安装
----验证是否添加成功
----选择要启用的mysql版本
----经过Yum安装mysql
----启动和关闭 MySQL Server
----防火墙设置
----mysql安全设置
----远程访问设置
----更改数据存放目录
----开机自起
----设置字符集
----其余经常使用配置配置
----备份还原linux
安装环境sql
centos7
MySQL 5.6.24
依赖安装数据库
MySQL依赖libaio,因此先要安装libaio
yum search libaio #检索相关信息
yum install libaio # 安装依赖包centos
yum install libaio缓存
检查mysql是否已安装安全
yum list installed | grep mysql
若是已经安装,就先所有卸载,命令以下:
yum -y remove mysql-libs.x86_64
安装服务器
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
yum localinstall mysql-community-release-el7-5.noarch.rpm 并发
验证是否添加成功
yum repolist enabled | grep "mysql.*-community.*" socket
选择要启用的mysql版本
查看mysql版本,执行
yum repolist all | grep mysql
能够看到 5.5, 5.7 版本是默认禁用的,由于如今最新的稳定版是 5.6
能够经过相似下面的语句来启动某些版本
yum-config-manager --disable mysql56-community
yum-config-manager --enable mysql57-community-dmr
或者经过修改 /etc/yum.repos.d/mysql-community.repo 文件
# Enable to use MySQL 5.6
[mysql56-community]
name=MySQL 5.6 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.6-community/el/7/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:/etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
其中 enabled=0 是指禁用,enabled=1 指启用。
注意: 任什么时候候,只能启用一个版本。
执行
yum repolist enabled | grep mysql
查看当前的启动的 MySQL 版本
经过Yum安装mysql
执行命令
yum install mysql-community-server
查看安装目录
whereis mysql
能够看到mysql的安装目录是/usr/bin
启动和关闭 MySQL Server
启动 MySQL Server
systemctl start mysqld
查看 MySQL Server 状态
systemctl status mysqld
关闭 MySQL Server
systemctl stop mysqld
测试是否安装成功
mysql
能够进入mysql命令行界面
防火墙设置
远程访问 MySQL, 需开放默认端口号 3306.
方式1:iptables(CentOS 7.x版本以前用法,不推荐)
打开 iptables 的配置文件:
vi /etc/sysconfig/iptables
若是该 iptables 配置文件 不存在,先执行 yum install iptables-services 安装
添加
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 3306 -j ACCEPT
-A RH-Firewall-1-INPUT -m state –state NEW -m udp -p udp –dport 3306 -j ACCEPT
执行iptables重启生效
service iptables restart
方式2:firewall-cmd(推荐)
Centos 7使用firewalld代替了原来的iptables
执行
firewall-cmd --permanent --zone=public --add-port=3306/tcp
firewall-cmd --permanent --zone=public --add-port=3306/udp
这样就开放了相应的端口。
执行重启防火墙
firewall-cmd --reload
使最新的防火墙设置规则生效。
注:
启动防火墙 systemctl start firewalld
关闭防火墙 systemctl stop firewalld
查看 状态 systemctl status firewalld
mysql安全设置
服务器启动后,能够执行
mysql_secure_installation;
远程访问设置
建立一个普通用户 sa ,密码是 some_pass
CREATE USER 'sa'@'%' IDENTIFIED BY 'some_pass';
给这个用户授予 SELECT,INSERT,UPDATE,DELETE 的远程访问的权限,这个帐号通常用于提供给实施的系统访问
GRANT SELECT,INSERT,UPDATE,DELETE ON *.* TO 'sa'@'%';
建立一个管理员用户 admin 帐号 ,密码是 some_pass
CREATE USER 'admin'@'%' IDENTIFIED BY 'some_pass';
给这个用户授予全部的远程访问的权限。这个用户主要用于管理整个数据库、备份、还原等操做。
GRANT ALL ON *.* TO 'admin'@'%';
使受权马上生效
flush privileges;
更改数据存放目录
建立数据存放目录
home 目录下创建 data 目录
mkdir /home/data
把 MySQL 服务进程停掉
若是 MySQL 是启动的,要先关闭
mysqladmin -u root -p shutdown
移动数据到数据存放目录
/var/lib/mysql 整个目录移到 /home/data,执行
mv /var/lib/mysql /home/data
这样就把 MySQL 的数据文件移动到了 /home/data/mysql 下
修改 /etc/my.cnf 文件,
[mysqld]
datadir=/home/data/mysql
socket=/home/data/mysql/mysql.sock
[mysql]
socket=/home/data/mysql/mysql.sock
修改权限
chown -R mysql:mysql /home/data/mysql
重启后,若是不能启动 MySQL 服务,执行
vi /etc/sysconfig/selinux
调整
SELINUX=permissive
保存设置,执行 reboot 重启生效
开机自起
查看 MySQL 服务是否开机启动
systemctl is-enabled mysql.service;echo $?
enabled
0
若是是 enabled 则说明是开机自动,若是不是,执行
chkconfig --levels 235 mysqld on
设置字符集
通常的,为了支持中文,咱们应该讲字符集设为 UTF-8, 执行
SHOW VARIABLES LIKE 'character%';
查看当前 MySQL 字符集
mysql> SHOW VARIABLES LIKE 'character%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
能够看到默认服务器的字符器是 latin1 ,对中文不友好。
修改 /etc/my.cnf 文件,添加字符集的设置
[mysqld]
character_set_server = utf8
[mysql]
default-character-set = utf8
重启 MySQL ,能够看到字符集已经修改了
其余经常使用配置配置
调整 MySQL 运行参数,修改 /etc/my.cnf 文件,经常使用配置以下:
[mysqld]
basedir = path # 使用给定目录做为根目录(安装目录)。
datadir = path # 从给定目录读取数据库文件。
pid-file = filename # 为mysqld程序指定一个存放进程ID的文件(仅适用于UNIX/Linux系统);
socket = /tmp/mysql.sock # 为MySQL客户程序与服务器之间的本地通讯指定一个套接字文件(Linux下默认是/var/lib/mysql/mysql.sock文件)
port = 3306 # 指定MsSQL侦听的端口
key_buffer = 384M # key_buffer是用于索引块的缓冲区大小,增长它可获得更好处理的索引(对全部读和多重写)。
索引块是缓冲的而且被全部的线程共享,key_buffer的大小视内存大小而定。
table_cache = 512 # 为全部线程打开表的数量。增长该值能增长mysqld要求的文件描述符的数量。能够避免频繁的打开数据表产生的开销
sort_buffer_size = 2M # 每一个须要进行排序的线程分配该大小的一个缓冲区。增长这值加速ORDER BY或GROUP BY操做。
注意:该参数对应的分配内存是每链接独占!若是有100个链接,那么实际分配的总共排序缓冲区大小为100×6=600MB
read_buffer_size = 2M # 读查询操做所能使用的缓冲区大小。和sort_buffer_size同样,该参数对应的分配内存也是每链接独享。
query_cache_size = 32M # 指定MySQL查询结果缓冲区的大小
read_rnd_buffer_size = 8M # 改参数在使用行指针排序以后,随机读用的。
myisam_sort_buffer_size =64M # MyISAM表发生变化时从新排序所需的缓冲
thread_concurrency = 8 # 最大并发线程数,取值为服务器逻辑CPU数量×2,若是CPU支持H.T超线程,再×2
thread_cache = 8 # #缓存可重用的线程数
skip-locking # 避免MySQL的外部锁定,减小出错概率加强稳定性。
[mysqldump]
max_allowed_packet =16M # 服务器和客户端之间最大能发送的可能信息包
[myisamchk]
key_buffer = 256M
sort_buffer = 256M
read_buffer = 2M
write_buffer = 2M
其余可选参数:
back_log = 384
指定MySQL可能的链接数量。 当MySQL主线程在很短期内接收到很是多的链接请求,该参数生效,主线程花费很短期检查链接而且启动一个新线程。 back_log参数的值指出在MySQL暂时中止响应新请求以前的短期内多少个请求能够被存在堆栈中。 若是系统在一个短期内有不少链接,则须要增大该参数的值,该参数值指定到来的TCP/IP链接的侦听队列的大小。 试图设定back_log高于你的操做系统的限制将是无效的。默认值为50。对于Linux系统推荐设置为小于512的整数。
max_connections = n
MySQL服务器同时处理的数据库链接的最大数量(默认设置是100)。超过限制后会报 Too many connections 错误
key_buffer_size = n
用来存放索引区块的RMA值(默认设置是8M),增长它可获得更好处理的索引(对全部读和多重写)
record_buffer:
这里写代码片 每一个进行一个顺序扫描的线程为其扫描的每张表分配这个大小的一个缓冲区。 若是你作不少顺序扫描,你可能想要增长该值。默认数值是131072(128K)
wait_timeout:
服务器在关闭它以前在一个链接上等待行动的秒数。
interactive_timeout:
服务器在关闭它前在一个交互链接上等待行动的秒数。 一个交互的客户被定义为对 mysql_real_connect()使用 CLIENT_INTERACTIVE 选项的客户。 默认数值是28800,能够把它改成3600。
skip-name-resolve
禁止MySQL对外部链接进行DNS解析,使用这一选项能够消除MySQL进行DNS解析的时间。 但须要注意,若是开启该选项,则全部远程主机链接受权都要使用IP地址方式,不然MySQL将没法正常处理链接请求!
log-slow-queries = slow.log
记录慢查询,而后对慢查询一一优化
skip-innodb
skip-bdb
关闭不须要的表类型,若是你须要,就不要加上这个
备份、还原
备份
mysqldump --socket=/home/data/mysql/mysql.sock --single-transaction=TRUE -u root -p emsc > emsc.sql
还原 mysql --socket=/home/data/mysql/mysql.sock -u root -p emsc < emsc.sql