CentOS 7系统搭建MySQL数据库与报错解决方式


今天下午在安装MySQL的时候,踩了很多很多的坑,也报了许多错误,此文章是查阅了大量的资料和面向百度后,自己得出的结论,希望对大家有所帮助,不用和我一样踩那么多坑,费时又费力。

环境:阿里云服务器,系统为CentOS7.3

首先删除原来的数据库,centos7中默认安装了数据库MariaDB,如果直接安装MySQL的话,会直接覆盖掉这个数据库,可以手动删除一下:

[root@pretty_mu ~]# rpm -qa|grep mariadb  // 查询出来已安装的mariadb
[root@pretty_mu ~]# rpm -e --nodeps 文件名  // 卸载mariadb,文件名为上述命令查询出来的文件

下载与安装MySQL

这里采用了yum管理好了各种rpm包的依赖,能够从指定的服务器自动下载rpm包并且安装,所以在安装完成后必须要卸掉,否则会自动更新,在文章的最后会有卸载指令。

1.安装MySQL官方的yum repository

[root@pretty_mu ~]# wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm

2.下载rpm包

[root@pretty_mu ~]# yum -y install mysql57-community-release-el7-10.noarch.rpm

3.安装MySQL服务

[root@pretty_mu ~]# yum -y install mysql-community-server

最后会出现个complete!表示安装成功。

4.启动MySQL服务

[root@pretty_mu ~]# systemctl start mysqld.service

5.启动MySQL服务后进行查看服务器状态

[root@pretty_mu ~]# systemctl status mysqld.service

如果看到类似下面的界面,或者以Starting MySqL server…started MysqlServer…结尾的话,就成功启动了。

centos7设置数据库账号密码 centos7创建数据库_MySQL


几个关于MySQL状态的命令

重启:
[root@pretty_mu ~]# systemctl restart mysqld.service

停止:
[root@pretty_mu ~]# systemctl stop mysqld.service

查看状态:
[root@pretty_mu ~]# systemctl status mysqld.service

配置MySQL的开机启动

[root@pretty_mu ~]# systemctl enable mysqld

[root@pretty_mu ~]# systemctl daemon-reload   // 刚配置的服务需要识别,必须刷新配置。

MySQL登录命令

[root@pretty_mu ~]# mysql -u root -p

意思就是用root用户登录,然后准备输入密码。

第一次启动MySQL后,就会有临时密码,这个默认的初始密码在/var/log/mysqld.log文件中,我们可以用下面这个命令来查看:

[root@pretty_mu ~]# grep "password" /var/log/mysqld.log

centos7设置数据库账号密码 centos7创建数据库_服务器_02


或者我们还可以先跳过密码验证登录进MySQL:

1.停止服务:

[root@pretty_mu ~]# systemctl stop mysqld.service

2.修改MySQL的配置文件:

[root@pretty_mu ~]# vi /etc/my.cnf 或者 vim /etc/my.cnf

进入之后按i或者按键盘上的Insert键进入写入模式。

3.在最后一行添加一行配置:

skip-grant-tables

添加完后先按键盘的Esc键,输入一个冒号“:”后,输入“wq!”来表示保存。

4.最后再启动服务:

[root@pretty_mu ~]# systemctl start mysqld.service



这时就可以跳过密码来登录MySQL:

[root@pretty_mu ~]# mysql -u root

再进行修改密码:

mysql> use mysql;

mysql> update mysql.user set authentication_string=password('密码') where user='root';

然后按照上面的步骤重新修改配置文件,去掉最后一行的skip-grant-tables,重启MySQL。

最后就可以用新密码登陆啦。

centos7设置数据库账号密码 centos7创建数据库_MySQL_03

关于MySQL报错

centos7设置数据库账号密码 centos7创建数据库_数据库_04


如果出现以上这个情况,还要输入一条改密码的语句:

mysql> SET PASSWORD = PASSWORD('密码');

如果出现以下这样的问题:

centos7设置数据库账号密码 centos7创建数据库_MySQL_05


这个问题的原因是因为密码等级太简单,不能使用弱密码,如果你坚持要这样的密码,需要改变密码等级:

mysql> set global validate_password_policy=0;  // 改变密码等级

mysql> set global validate_password_length=4;   // 改变密码最小长度

然后再输入改密码的语句:

mysql> SET PASSWORD = PASSWORD('密码');

最后再试一下指令 show databases; 就没有报错啦。

配置远程登录:

MySQL默认root用户只能本地登录,如果要远程连接,要简单设置下,这里直接用root来远程登录。

使用命令:

mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '密码' WITH GRANT OPTION;

说明: *.*的意思是所有库的所有表;TO后面跟的是用户名;@后面跟的是ip地址,%代表所有ip地址,IDENTIFIED BY后面的是密码。

然后再刷新MySQL的系统权限相关表:

mysql> flush privileges;



结尾

1.文章开始时说要卸载MySQL官方的yum repository,使用下面的命令:

[root@pretty_mu ~]# yum -y remove mysql57-community-release-el7-10.noarch

最后出现以下的提示表示卸载成功。

centos7设置数据库账号密码 centos7创建数据库_服务器_06

2.MySQL需要设置成utf-8:

打开/etc/my.cnf,也就是数据库的配置文件,然后在底部复制粘贴:

character_set_server=utf8
init_connect='SET NAMES utf8'

我使用的是Navicart来管理数据库,如果采用Navicat新建数据库来连接时,需要将编码方式设置为:
字符集:utf8
排序规则:utf8_general_ci

3.阿里云的服务器中的防火墙加入mysql连接的规则。这个很重要,不然远程无法连接上。

centos7设置数据库账号密码 centos7创建数据库_MySQL_07


4.配置文件的说明:

/etc/my.cnf--------------------mysql的主配置文件
/var/lib/mysql mysql--------数据库的数据库文件存放位置
/var/log mysql----------------数据库的日志输出存放位置