CentOS上安装MySQL

Author Avatar
双例模式 10月 19, 2018
  • 在其它设备中阅读本文章

参考:http://www.centoscn.com/mysql/2016/0315/6844.html

0. 检查MySQL是否已经安装

使用如下命令判断是否已经安装

yum list installed | grep mysql

如果有,就先全部卸载,命令如下:

yum -y remove mysql-libs.x86_64

1. 依赖包安装

MySQL 依赖 libaio,所以先要安装 libaio

yum search libaio  # 检索相关信息
yum install libaio # 安装依赖包

2.下载MySQL Yum Repository

地址为 http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm

wget http://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm
  • 如果提示-bash: wget: 未找到命令,请先执行 yum install wget 安装 wget

3. 安装

使用yum 和刚刚下载的rpm源安装

rpm -ivh mysql57-community-release-el7-9.noarch.rpm
yum install mysql-community-server

4.运行

  • 安装完成后启动mysql服务
    service mysqld start
    systemctl start mysqld
    
  • 查看 MySQL Server 状态

    service mysqld status
    systemctl status mysqld
    
  • 关闭 MySQL Server

    service mysqld stop
    systemctl stop mysqld
    
  • 重启MySQL Server
    service mysqld restart
    

5. 配置

5.1 安全性配置
  • 有些版本的MySQL(5.6及以下版本)默认没有root密码,可以通过如下方式设置root用户密码

    mysql -uroot
    mysql> set password for 'root'@'localhost' = password('CvcO7pQL');
    mysql> exit
    
  • 有些版本默认会生成一个密码,密码的查找方式如下:
    (参考:http://blog.csdn.net/kindroid/article/details/51018107)

  • 在低于Mysql 5.7.6的版本上

Mysql是使用mysql_install_db命令初始化数据库的,该命令会在安装Mysql的用户根目录下创建一个.mysql_secret文件,该文件记录了初始化生成的随机密码,用户可使用改密码登录Mysql并重新修改密码。

  • 对于Mysql 5.7.6以后的5.7系列版本

Mysql使用mysqld –initialize或mysqld –initialize-insecure命令来初始化数据库,后者可以不生成随机密码。但是安装Mysql时默认使用的是前一个命令,这个命令也会生成一个随机密码。改密码保存在了Mysql的日志文件中。

在Centos 7系统上使用rpm命令安装Mysql后,mysql的配置文件是/etc/my.cnf,打开该文件,可以看到mysql的datadir和log文件等的配置信息,如下:

datadir=/var/lib/mysql
log-error=/var/log/mysqld.log

打开/var/log/mysqld.log文件,搜索字符串A temporary password is generated for root@localhost:,可以找到这个随机密码,通常这一行日志在log文件的最初几行,比较容易看到。

  • 做默认的安全设置:

    mysql_secure_installation
    

    在此过程中会需要输入前面找到的root用户密码,完成后所有安装流程全部完成

  • 远程访问设置
    创建一个普通用户 sa ,密码是 password

    set global validate_password_policy=0; #MySQL 5.7版本以上可能对密码安全性有要求,故可以降低安全级
    CREATE USER 'sa'@'%' IDENTIFIED BY 'password';
    

    给这个用户授予 SELECT,INSERT,UPDATE,DELETE 的远程访问的权限,这个账号一般用于提供给实施的系统访问

    GRANT SELECT,INSERT,UPDATE,DELETE  ON *.* TO 'sa'@'%';
    

    创建一个管理员用户 jbadm 账号 ,密码是 password

    CREATE USER 'jbadm'@'%' IDENTIFIED BY 'password';
    

    给这个用户授予所有的远程访问的权限。这个用户主要用于管理整个数据库、备份、还原等操作。

    GRANT ALL  ON *.* TO 'jbadm'@'%';
    

    使授权立刻生效

    flush privileges;
    
    5.2 数据文件存放配置
  • 创建数据存放目录
    mkdir /home/data
    
  • 移动数据到数据存放目录
    停止服务
    mysqladmin -u root -p shutdown #停止服务
    
    移动目录
    mv /var/lib/mysql /home/data
    
    修改 /etc/my.cnf 文件
    修改
    datadir=/home/data/mysql
    socket=/home/data/mysql/mysql.sock
    必要情况下可能还需要区分服务端和客户端的参数
    [mysqld]/[client]/[mysql]
    vi /etc/my.cnf
    
    修改权限
    chown -R mysql:mysql /home/data/mysql
    
  • 重启数据库服务
    重启后,如果不能启动 MySQL 服务,执行
    vi  /etc/sysconfig/selinux
    #调整参数
    SELINUX=permissive
    
    保存设置,执行 reboot 重启生效
5.3 设置字符集

一般的,为了支持中文,我们应该讲字符集设为 UTF-8, 执行

SHOW VARIABLES LIKE 'character%';

查看当前 MySQL 字符集
character_set_server为默认的字符集
修改 /etc/my.cnf 文件,添加字符集的设置

[mysqld]   
character_set_server = utf8

[mysql]
default-character-set = utf8
5.4 打开防火墙
5.5 自动启动配置

检查是否开机自启

systemctl is-enabled mysqld.service;echo $?

如果是 enabled 则说明是开机自动
设置开机自启

chkconfig --levels 235 mysqld on