zoukankan      html  css  js  c++  java
  • centos7安装mysql(yum)

    centos7安装mysql(yum)

    ----安装环境
    ----依赖安装
    ----检查mysql是否已安装
    ----安装
    ----验证是否添加成功
    ----选择要启用的mysql版本
    ----通过Yum安装mysql
    ----启动和关闭 MySQL Server
    ----防火墙设置
    ----mysql安全设置
    ----远程访问设置
    ----更改数据存放目录
    ----开机自起
    ----设置字符集
    ----其他常用配置配置
    ----备份还原



    安装环境

    centos7
    MySQL 5.6.24

    安装时要先禁用SELinux,再安装MySQL,步骤是: 

    1. 关闭SELinux,重启系统; 
    2. 安装MySQL(MySQL server应该可以启动了); 
    3. 启用SELinux,重启系统,之后MySQL server就可以正常启动了。

    启用禁用SELinux的方法是: 
       vi /etc/selinux/config(也有人说是/etc/sysconfig/selinux文件,其实两个之间是链接关系,随便改其中一个,另一个也改了) 
       SELINUX=disable 禁用SeLinux 
       SELINUX=enforcing 启用SeLinux 

    SELINUX 这定义在一个系统上SELinux最高级别的状态 
    enforcing 强制模式,SELinux安全政策被强制执行 
    permissive 兼容模式,SELinux系统输出警告信息,但不强制执行安全政策 
    disabled 禁用模式,SELinux被完全终止 

    参考资料:http://tianyihuyidao9.iteye.com/blog/1617948

    删除依赖包:

    yum remove mysql-libs


    依赖安装

    MySQL依赖libaio,所以先要安装libaio
    yum search libaio #检索相关信息
    yum install libaio # 安装依赖包

    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.*"

    选择要启用的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

    查看默认密码

    grep "temporary password" /var/log/mysqld.log

    修改默认密码

    set password for 'root'@'localhost'=password('newpasswd');


    测试是否安装成功

    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 重启生效

    开机自起

    vim /etc/rc.local
    添加service mysqld start


    设置字符集

    一般的,为了支持中文,我们应该讲字符集设为 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

  • 相关阅读:
    pfofinet和S7
    A1010 Radix [二分/******]
    A1005 Spell It Right
    最大回文子串长度 [dp]
    HDU 1159 Common Subsequence [最长公共子序列]
    1045 Favorite Color Stripe [动态规划/最长不下降子序列]
    1007 Maximum Subsequence Sum [动态规划]
    数塔问题(递归/递推)
    hdu 畅通工程 [Kruskal/Prime]
    1087 All Roads Lead to Rome [dj]
  • 原文地址:https://www.cnblogs.com/wlsblog/p/mysql.html
Copyright © 2011-2022 走看看