一、使用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源的下载地址为:
命令如下:
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.repo
及 mysql-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
出现上面的提示是因为密码太简单了,解决方法如下:
-
使用复杂密码,MySQL默认的密码策略是要包含数字、字母及特殊字符;
-
如果只是测试用,不想用那么复杂的密码,可以修改默认策略,即
validate_password_policy
(以及validate_password_length
等相关参数),使其支持简单密码的设定,具体方法可以自行百度; -
修改配置文件
/etc/my.cnf
,添加validate_password=OFF
,保存并重启MySQL,在根目录下执行命令如下:vi /etc/my.cnf
,会进入vi,然后按i,可编辑状态,在[mysqld]插入
validate_password=OFF
,如下图打完字后,按ESC,然后输入
:wq
就保存退出了。然后重启mysqld 服务,
systemctl restart mysqld.service
-
再次执行下面命令
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
-
查看编码
-
终端显示查询,命令如下:
mysql> SHOW VARIABLES LIKE 'character%';
如下图:
设置编码
-
使用Navicat工具创建表时,字符集选择utf8,表字段用utf8。
-
修改编码方式,如下
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.下载压缩包
下载地址如下:
我的系统是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相同,不再赘述