这里不得不先吐槽下各种解决这个问题的文章,公司刚刚校招进来的新同学被坑的好惨,到处找解决办法,结果搜索出来方法全都一样,就是解决不了,一度怀疑自己是不是不适合这个职业,只能说发布和搬运文章的作者们可能根本就没有试过是不是能够解决问题。
一、基本安装过程
- 查看系统是否安装了mysql软件
rpm -qa|grep -i mysql
- 将已经安装过的软件卸载掉
yum remove mysql
- 下载安装mysql的repo源
CentOS 7的yum源中默认是没有mysql的。所以,为了解决这个问题我们首先下载安装mysql的repo源。
可以在MySQL官方的Yum Repository地址:https://dev.mysql.com/downloads或者https://repo.mysql.com/找到要下载的安装包路径,例如这里使用http://repo.mysql.com//mysql57-community-release-el7-7.noarch.rpm
wget http://repo.mysql.com//mysql57-community-release-el7-7.noarch.rpm
- 安装mysql的repo源
rpm -ivh mysql57-community-release-el7-7.noarch.rpm
- 按照以下顺序开始安装
yum install mysql-server
yum install mysql-devel
yum install mysql
# 查看安装结果
rpm -qa | grep -i mysql
- 服务开关操作
# 以下执行其中之一即可
# 查看mysql当前的状态
service mysqld status
systemctl status mysqld
# 启动mysql
service mysqld start
systemctl start mysqld
# 停止mysql
service mysqld stop
systemctl stop mysqld
# 重启mysql
service mysqld restart
systemctl restart mysqld
- 设置MySQL开机启动
systemctl enable mysqld
二、安装完成后无法登录的问题,这里不止针对CentOS
,其他系统安装MySQL方法相同。
安装完成后用命令mysql -u root -p
然后Enter Password
,但是无法登录。解决办法如下:
- 在
/etc/my.cnf
文件中最后添加一行skip-grant-tables
,作用就是跳过了MySQL的用户验证,然后重启mysql,这里建议新手复制保存一份原文件,以便搞乱以后可以还原
systemctl restart mysqld
- 输入mysql,不需要带任何登录参数直接回车就可以登陆上数据库,进入数据库之后依次执行下面的命令:
use mysql;
show tables;
select user, authentication_string from user;
update mysql.user set authentication_string=password('') where user='root';
flush privileges;
exit;
- 恢复
/etc/my.cnf
文件,将skip-grant-tables
删除或者注释掉,然后重启mysql
systemctl restart mysqld
- 使用空密码进入MySQL,依次执行下面的命令
# 将123456替换成需要设置的密码
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
flush privileges;
exit;
问题解决