分类
Linux MySql

CentOS 7 安装 MySQL 5.7

因为开源问题,CentOS 7 yum源用MariaDB取代MySQL。对于使用者来说,开不开源其次,MySQL毕竟有商业支持,就像使用OracleJDK还是OpenJDK一样,争论毫无意义。废话不多说,在CentOS 7安装MySQL步聚如下:
1.安装源
rpm -hiv http://repo.mysql.com/mysql57-community-release-el7.rpm
2.更新源
yum update
这个时候会系统会提示用MySQL替换MariaDB。
3.安装MySQL
yum install mysql mysql-server
安装完成。原以为很顺利,结果出了一系列小问题。

安装完成后MySQL用户无法登录。以前在Debian系Linux安装,如果是从源里安装,安装前会要求输入密码。如果是编译安装,MySQL的root用户使用localhost登录是不需要密码的。
依据官方说明5.6以后版本,第一次启动时会在root目录下生产一个随机密码,文件名.mysql_secret。我在root目录下找了下,没有这个文件,所以只能用其他方法了。
首先,打开MySQL配置文件,/etc/my.cnf,找到[mysqld],在下面一行添加
skip-grant-tables
保存退出,重启MySQL,再登录。
mysql -uroot
这样不用密码也能登录了。
进去后第一件事是修改密码。以前我是找到密码表,首先查看:
select user, password, host from mysql.user
发现报错,找不到password。
ERROR 1054 (42S22): Unknown column ‘password’ in ‘field list’
原来MySQL 5.7把 password 列换成 authentication_string 了。使用以下语句查询,就没问题了。
select user, authentication_string, host from mysql.user
于是把root密码置为空。
update mysql.user set authentication_string=” where user=’root’
再把/etc/my.cnf中的skip-grant-tables去掉,重启MySQL服务,再次登录,无需密码也能进了。
搞完开始创建用户:
create user pay identified by ‘123456’
发现又报错:
ERROR 1820 (HY000): You must SET PASSWORD before executing this statement
这是因为没有设置密码的原因。MySQL 5.7对安全有了更多的要求,在解决问题时了解到,在MySQL 5.6对密码的强度进行了加强,推出了validate_password 插件,支持密码的强度要求。
参考:MySQL密码强度审计插件:validate_password的使用说明
按提示,输入
SET PASSWORD=PASSWORD(‘root用户密码’)
退出再登录,可以成功创建用户了。
第一次在Linux下安装MySQL 5.7,没想到遇到这么多问题,看来每次的新版本发布,要学着去看它的变更日志了。
最后,附上MySQL的常用设置
# 使用UTF-8编码
character_set_server = utf8
init_connect = ‘SET NAMES utf8’
# 在Linux下忽略表名大小写
lower_case_table_names = 1
# 解决连接池8小时断开问题
wait_timeout = 315360000
interactive_timeout = 315360000
# 关闭密码审查插件(5.6及以后的版本有效)
validate_password = OFF
# 任何远程IP都能连接,如果设为127.0.0.1,则只允许本机连接
bind-address = 0.0.0.0

发表评论

电子邮件地址不会被公开。