Centos7 安装Mysql5.7 使用yum 方式安装方便Mysql及时更新
1. 下载mysql yum库
最新版本地址: http://dev.mysql.com/downloads/repo/yum/
注意:
1. Centos5 对应 Red Hat Enterprise Linux 5
2. Centos6 对应Red Hat Enterprise Linux 6
3. Centos7 对应Red Hat Enterprise Linux 7
# 如果没有wget 可以安装 yum install wget
wget https://repo.mysql.com//mysql57-community-release-el7-11.noarch.rpm
2. 安装 Mysql yum 库
yum localinstall mysql-community-release-el7-{version-number}.noarch.rpm
3. 更新yum
yum update
这次应该能看到mysql安装
4. 查看当前启动的mysql版本
yum repolist all | grep mysql
可以看到当前启用MySQL版本,默认启用最高版本Mysql,可手动启用其他版本
5. 安装Mysql数据库
yum install mysql-community-server
会看到正在下载Mysql数据库
6. 启动Mysql数据库
systemctl start mysqld.service
查看Mysql服务启动情况
systemctl status mysqld.service
注意: 启动出错: Can’t change data directory owner to mysql
由于安全限制需要将防火墙关闭 setenforce 0
7. 修改Root密码
1. 查看root临时密码
grep 'temporary password' /var/log/mysqld.log
2. 使用临时密码登录Mysql
mysql -uroot -p
3. 修改root密码
a. 自定义密码安全策略:validate_password_policy (修改该值即可)
- 取值有3中:
- 0 or LOW : 长度,至少8位
- 1 or MEDIUM : 符合长度,且必须含有数字,小写或大写字母,特殊字符。
- 2 or STRONG : 符合长度,且必须含有数字,小写或大写字母,特殊字符。字典文件
测试环境密码不需要那么复杂,设置级别为0即可
mysql> set global validate_password_policy=0;
b. 查看密码长度(需要修改密码之后才能执行):
mysql> SHOW VARIABLES LIKE 'validate_password%';
# 修改密码长度为6,默认为8
mysql> set global validate_password_length=6;
c. 修改Root密码:
# 修改root密码
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass4!';
详细权限配置参考: https://www.cnblogs.com/candle806/p/4048651.html
注意: 如果忘记初始密码可以在mysql日志文件中查找 /var/log/mysqld.log
8. Mysql数据库目录迁移(可选)
- 对于首次启动Mysql,修改my.cnf 之后可以使用如下命令,初始化目录
mysql_install_db --user=mysql \
--basedir=/opt/mysql/mysql \
--datadir=/opt/mysql/mysql/data
详细说明参考:https://dev.mysql.com/doc/refman/5.6/en/mysql-install-db.html
另外一种使用mysqld 初始化数据目录
详细说明参考:https://dev.mysql.com/doc/refman/5.7/en/data-directory-initialization-mysqld.html
问题:
如果目录权限正确,但是不能启动MySQL,可能跟SeLinux有关,修改seLinux指定目录权限即可
chcon -R -t mysqld_db_t dir
临时关闭防火墙:
setenforce 0
永久关闭防火墙:
# 将SELINUX=enforcing改为SELINUX=disabled
vim /etc/selinux/config
9. Mysql用户授权
1. 创建用户
mysql > CREATE USER 'username'@'%' IDENTIFIED BY 'password';
2. 给用户授予数据库操作权限:
# % 为全部Ip, 数据库名.标名 可以使用 * 代替,表示所有库中所有表
mysql > grant all privileges on database_name.table_name to 'username'@'host';
3. 取消用户数据库操作权限
mysql> revoke all on dingshops.* from 'test'@'%';
4. 查看用户数据库操作权限:
mysql> show grants for 'test'@'%';
5. 更改用户密码
mysql> SET PASSWORD FOR 'username'@'host' = PASSWORD('newpassword');
6. 刷新使权限生效:
mysql>flush privileges;