问题描述:
CentOS 7 之后的版本使用yum安装MySQL是默认安装miroadb,为了开发方便,想依然使用MySQL,就Google了一下,经过几个小时的努力,解决了一切问题。
1. 创建MySQL的yum库,通过官方yum库下载
选择最新的MySQL源rpm包下载:
或者通过wget
命令(最新下载地址可自己通过官网获取):
# 下载mysql源安装包
wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm
# 安装mysql源
yum localinstall mysql57-community-release-el7-8.noarch.rpm
# 检查MySQL源是否安装成功
yum repolist enabled | grep "mysql.*-community.*"
2. 安装 MySQL
- 通过修改
/etc/yum.repos.d/mysql-community.repo
文件来改变默认安装版本,该文件是一个指定子资源的入口。
例如,如果需要启用 5.6 版本的源,就需要将如下所示的 5.6 版本源设置为enabled=1
并将5.7版本源设置为enabled=0
。若安装其他如5.5版本,操作类似:
# 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 ### 启用5.6版本源
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
[mysql57-community]
name=MySQL 5.7 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/7/$basearch/
enabled=0 ### 禁用5.7版本源
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
- 安装MySQL:
yum install mysql-community-server
- 启动MySQL服务:
systemctl start mysqld
# 或者
service mysqld start
注意:在5.7版本的MySQL启动时,因为数据目录是空的,所以会有以下操作:
服务器初始化
在数据目录生成一个SSL证书和key文件
validate_password
插件安装并启用
创建一个超级管理帐号'root'@'localhost'。管理的密码会保存在错误日志文件中,可以通过以下命令查看:
$ sudo grep 'temporary password' /var/log/mysqld.log
可以通过以下命令并使用自动生成的临时密码登录,然后修改为一个自定义密码:
$ mysql -u root -p
密码修改:
### 在MySQL中:
$ ALTER USER 'root'@'localhost' IDENTIFIED BY 'newPassword';
### 上面的方法尝试失败,所以我通过了下面的方法:
### 在Linux中:
mysqladmin -u root password 'newPassword'
### 提示Warning: Using a password on the command line interface can be insecure,可忽略,也可自己查查问题,应该是因为密码简单等小问题出现的。
MySQL的validate_password插件是默认安装的。这要求MySQL密码至少包含一个大写字母、一个小写字母、一个数字和一个特殊字符,并且总密码长度至少为8个字符。
- 查看MySQL运行状态:
service mysqld status
3. 其他设置与优化
默认配置文件路径:
配置文件: /etc/my.cnf
日志文件: /var/log//var/log/mysqld.log
服务启动脚本: /usr/lib/systemd/system/mysqld.service
socket文件: /var/run/mysqld/mysqld.pid
设置开机启动
systemctl enable mysqld
systemctl daemon-reload
修改root默认密码
有些版本MySQL安装完成之后,在 /var/log/mysqld.log
文件中给root生成了一个默认密码。通过下面的方式找到root默认密码,然后登录mysql进行修改:
grep 'temporary password' /var/log/mysqld.log
mysql -uroot -p
# 进入MySQL
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass4!';
# 或者
mysql> set password for 'root'@'localhost'=password('MyNewPass4!');
关于密码
- 通过msyql环境变量可以查看密码策略的相关信息:
mysql> show variables like '%password%';
- 在/etc/my.cnf文件添加validate_password_policy配置,指定密码策略
# 选择0(LOW),1(MEDIUM),2(STRONG)其中一种,选择2需要提供密码字典文件
validate_password_policy=0
- 如果不需要密码策略,添加my.cnf文件中添加如下配置禁用即可:
validate_password = off
# 重启MySQL服务生效
systemctl restart mysqld
添加远程登录访问用户
默认只允许root帐户在本地登录,如果要在其它机器上连接mysql,必须修改root允许远程连接,或者添加一个允许远程连接的帐户,为了安全起见,我添加一个新的帐户:
mysql> GRANT ALL PRIVILEGES ON *.* TO 'yangxin'@'%' IDENTIFIED BY 'Yangxin0917!' WITH GRANT OPTION;
配置默认编码为utf8
修改/etc/my.cnf配置文件,在[mysqld]下添加编码配置,如下所示:
[mysqld]
character_set_server=utf8
init_connect='SET NAMES utf8'