阿里云服务器Centos7.6系统安装Mysql数据库

2,377 阅读8分钟

一、使用YUM安装

1. 安装失败原因及解决方案

根据Centos7安装Mysql失败+如何正确安装mysql+完全卸载mysql所说,因为CentOS 7.6 内部集成了mariadb,而安装mysql的话会和mariadb的文件冲突,所以需要先卸载掉mariadb,查看是否安装了mariadb的命令如下:

shell> rpm -qa | grep mariadb

卸载命令如下:

shell> rpm -e --nodeps mariadb-libs-5.5.60-1.el7_5.x86_64

并检测是否移除干净如下图:

2. CentOS 7安装Mysql失败原因

从CentOS 7开始,MariaDB成为Yum源中默认的数据库安装包。也就是说在CentOS 7及以上的系统中使用yum安装MySQL默认安装的会是MariaDB(MySQL的一个分支)。如果想安装官方MySQL版本,需要使用MySQL提供的Yum源。

3. 添加MySQL Yum Repository

下载MySQL源

官方地址:dev.mysql.com/downloads/r…

shell> cat /etc/redhat-release CentOS Linux release 7.6.1810 (Core)

查看系统版本:

shell> cat /etc/redhat-release

如下图:

选择对应的版本进行下载,例如CentOS 7当前在官网查看最新Yum源的下载地址为:

dev.mysql.com/get/mysql80…

命令如下:

shell> wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm

安装MySQL源

命令如下:

shell> sudo rpm -Uvh platform-and-version-specific-package-name.rpm

上面安装的是名字为platform-and-version-specific-package-name.rpm的安装包。

例如CentOS7当前最新MySQL源安装,命令如下:

shell> sudo rpm -Uvh mysql80-community-release-el7-3.noarch.rpm

检查是否安装成功

执行成功后会在/etc/yum.repos.d/目录下生成两个repo文件mysql-community.repomysql-community-source.repo

并且通过yum repolist可以看到mysql相关资源

执行命令如下:

shell> yum repolist enabled | grep "mysql.*-community.*"

如下图所示:

4. 选择MySQL版本

使用MySQL Yum Repository安装MySQL,默认会选择当前最新的稳定版本,例如通过上面的MySQL源进行安装的话,默安装会选择MySQL 8.0版本,如果就是想要安装该版本,可以直接跳过此步骤,如果不是,比如我这里希望安装MySQL5.7版本,就需要“切换一下版本”:

查看当前MySQL Yum Repository中所有MySQL版本(每个版本在不同的子仓库中)

shell> yum repolist all | grep mysql

如下图:

切换版本

shell> sudo yum-config-manager --disable mysql80-community

shell> sudo yum-config-manager --enable mysql57-community

此时有可能CentOS 7中执行yum-config-manager命令时提示“command not found”,原因是:CentOS 7系统默认没有安装这个命令,需要先安装才能使用。处理方式如下:

在执行yum-config-manager这个命令前,先执行以下命令安装yum-config-manager命令。

yum -y install yum-utils

说明yum-config-manager在yum-utils包里。

除了使用yum-config-manager之外,还可以直接编辑/etc/yum.repos.d/mysql-community.repo文件

例如:enabled=0禁用

mysql-community.repo文件内容如下:

[mysql80-community]
name=MySQL 8.0 Community Server
baseurl=http://repo.mysql.com/yum/mysql-8.0-community/el/7/$basearch/
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql

enabled=1启用

# Enable to use MySQL 5.7
[mysql57-community]
name=MySQL 5.7 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/7/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql

检查当前启用的MySQL仓库

shell> yum repolist enabled | grep mysql

如下图:

如果同时启用了多个仓库,安装时会选择最新版本

5. 安装MySQL

shell> sudo yum install mysql-community-server

该命令会安装MySQL服务器 (mysql-community-server) 及其所需的依赖、相关组件,包括mysql-community-client、mysql-community-common、mysql-community-libs等

如果带宽不够,这个步骤时间会比较长,请耐心等待~

解决官方MySql源通过Yum下载MySql慢的问题

备份系统自带的Yum源文件,命令如下:

shell> mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

下载阿里云的Yum配置文件,命令如下:

shell> wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

运行yum makecache生成缓存,命令如下:

shell> yum makecache

现在可以快速下载mysql了,命令如下:

shell> sudo yum install mysql-community-server

6. 启动MySQL

  • 启动

命令如下:  

shell> sudo systemctl start mysqld.service

CentOS 6:

shell> sudo service mysqld start

查看状态

shell> sudo systemctl status mysqld.service

CentOS 6:

shell> sudo service mysqld status

停止

shell> sudo systemctl stop mysqld.service

CentOS 6:

shell> sudo service mysqld stop

重启

shell> sudo systemctl restart mysqld.service

CentOS 6:

shell> sudo service mysqld restart

7. 修改密码初始密码

MySQL第一次启动后会创建超级管理员账号root@localhost,初始密码存储在日志文件中,命令如下:

shell> sudo grep 'temporary password' /var/log/mysqld.log

修改默认密码

注意:修改密码时一定要确认服务器已经启动

shell> mysql -uroot -p

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';

报错如下:

ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

出现上面的提示是因为密码太简单了,解决方法如下:

  1. 使用复杂密码,MySQL默认的密码策略是要包含数字、字母及特殊字符;

  2. 如果只是测试用,不想用那么复杂的密码,可以修改默认策略,即validate_password_policy(以及validate_password_length等相关参数),使其支持简单密码的设定,具体方法可以自行百度;

  3. 修改配置文件/etc/my.cnf,添加validate_password=OFF,保存并重启MySQL,在根目录下执行命令如下:

    vi /etc/my.cnf
    

    ,会进入vi,然后按i,可编辑状态,在[mysqld]插入validate_password=OFF,如下图

    打完字后,按ESC,然后输入

    :wq
    

    就保存退出了。然后重启mysqld 服务,

    systemctl restart mysqld.service
    
  4. 再次执行下面命令

    mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';

出现如下结果:

Query OK, 0 rows affected (0.00 sec)

8. 允许root远程访问

本地登录配置,将roo账号的host设置为通配符%,命令如下:

mysql> use mysql;

mysql> update user set host = '%' where user = 'root';

可查询,命令如下:

mysql> select host,user from user;

刷新,命令如下:

mysql> flush privileges;

9. 设置编码为utf8

  • 查看编码

  1. 终端显示查询,命令如下:

    mysql> SHOW VARIABLES LIKE 'character%';

如下图:

设置编码

  1. 使用Navicat工具创建表时,字符集选择utf8,表字段用utf8。

  2. 修改编码方式,如下

    mysql> set character_set_client=utf8;
    
    mysql> set character_set_results=utf8;
    
    mysql> set character_set_connection=utf8;
    

验证

mysql> select * from user;
+----+-----------+
| id | name      |
+----+-----------+
|  1 | 张三 	 |
|  2 | liLei     |
+----+-----------+
2 rows in set (0.00 sec)

10. 设置开机启动

shell> systemctl enable mysqld

shell> systemctl daemon-reload

11.查看进程,端口

ps   -C   mysqld                                                
netstat  -utnlp  | grep  mysqld 

12.查找初始化的密码

grep password /var/log/mysqld.log 

13.登录本地服务

mysql   -hlocalhost   -uroot   -p'初始化密码'    

14.查看服务信息

[root@192 ~]# uname -r
3.10.0-957.el7.x86_64

[root@192 ~]# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core) 

[root@192 ~]# cat /proc/version
Linux version 3.10.0-957.el7.x86_64 (mockbuild@kbuilder.bsys.centos.org) 
(gcc version 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC) ) 
#1 SMP Thu Nov 8 23:39:32 UTC 2018

15.卸载已安装的mysql

停掉mysql服务

systemctl stop  mysqld.service        #centOS7
service   mysqld  stop                #centOS6 

删掉或备份你的mysql数据库

(我选择的是删除,如果数据比较重要记得一定要备份)

rm -rf /etc/my.cnf
rm -rf /var/lib/mysql 

接着卸载已经安装的mysql的rpm包

yum list installed | grep mysql
rpm -qa  |grep -i mysql #查找已安装的服务
mysql-community-client.x86_64              5.7.17-1.el7                installed
mysql-community-common.x86_64              5.7.17-1.el7                installed
mysql-community-devel.x86_64               5.7.17-1.el7                installed
mysql-community-embedded.x86_64            5.7.17-1.el7                installed
mysql-community-embedded-compat.x86_64     5.7.17-1.el7                installed
mysql-community-embedded-devel.x86_64      5.7.17-1.el7                installed
mysql-community-libs.x86_64                5.7.17-1.el7                installed
mysql-community-libs-compat.x86_64         5.7.17-1.el7                installed
mysql-community-minimal-debuginfo.x86_64   5.7.17-1.el7                installed
mysql-community-server.x86_64              5.7.17-1.el7                installed
mysql-community-test.x86_64                5.7.17-1.el7                installed
mysql57-community-release.noarch           el7-8                       installed 

卸载服务(卸载的时候有会遇到一些问题)

yum remove mysql*  

建议使用这个卸载

rpm -ev 完整的包名

有一些mysql是rpm方式安装的会很难卸载 使用这个就可以 PS:卸载不了的rpm包不要着急 可以清理内存

yum remove 完整包名

二、压缩包解压安装tar.gz

1.下载压缩包

下载地址如下:

dev.mysql.com/downloads/m…

我的系统是Centos7.6,选择如下图:

命令如下:

shell> wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-5.8.0.23-linux-glibc2.12-x86_64.tar.gz

2.安装&配置:

依赖

MySQL依赖libaio库,如果没有先安装一下,命令如下:

shell> yum install libaio
  • 创建mysql用户

不需要登录的一个系统账号,启动MySQL服务时会使用该账号

shell> groupadd mysql

shell> useradd -r -g mysql -s /bin/false mysql

解压并创建链接

shell> cd /usr/local

shell> tar zxvf /path/to/mysql-5.8.0.23-linux-glibc2.12-x86_64.tar.gz

shell> ln -s mysql-5.8.0.23-linux-glibc2.12-x86_64/ mysql
  • 创建mysql-files目录

这一步并不是必须的,可以设置secure_file_priv的值指向该目录(用于限制数据导入导出操作的目录)

shell> cd mysql

shell> mkdir mysql-files

shell> chown mysql:mysql mysql-files

shell> chmod 750 mysql-files
  • 初始化

    shell> bin/mysqld --initialize --user=mysql

如果初始化时报错如下:

error while loading shared libraries: libnuma.so.1: cannot open shared object file: No such file or directory

是因为libnuma没有安装(或者默认安装的是32位),我们这里需要64位的:

shell> yum install numactl.x86_64

执行完后重新初始化即可 初始化成功后返回结果中有一行包含初始密码,第一次登录时要用到它:

A temporary password is generated for root@localhost: 8M0ary878s*U
  • 启用SSL(非必须)

    shell> bin/mysql_ssl_rsa_setup

  • 启动

    shell> bin/mysqld_safe --user=mysql &

查看进程可以看到一些默认参数,可以在配置文件中修改这些参数,命令如下:

shell> ps -ef | grep mysql

展示如下:

root     14604 12719  0 00:03 pts/0    00:00:00 /bin/sh bin/mysqld_safe --user=mysql
mysql    14674 14604  0 00:03 pts/0    00:00:00 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=VM_2_24_centos.err --pid-file=VM_2_24_centos.pid
  • 设置环境变量

避免每次执行mysql命令都要加上路径,在/etc/profile中添加:

export PATH=$PATH:/usr/local/mysql/bin
  • 设置为服务

    shell> cp support-files/mysql.server /etc/init.d/mysqld

    shell> service mysqld start|stop|restart|status

  • 开机启动

    shell> chkconfig --add mysqld

    shell> chkconfig --list mysqld

展示如下:

mysqld         	0:关	1:关	2:开	3:开	4:开	5:开	6:关

其他配置与yum相同,不再赘述