CentOS中默认安装的是MariaDB,安装完MySQL之后会覆盖MariaDB,由于安装MySQL需要添加很多依赖关系,所以这里使用yum安装.
下载MySQL源安装包
[root@localhost ~] wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
安装MySQL源(如果无法安装,先执行该命令:rm -f /var/run/yum.pid)
[root@localhost ~] yum -y install mysql57-community-release-el7-10.noarch.rpm
...........
Running transaction
正在安装 : mysql57-community-release-el7-10.noarch 1/1
验证中 : mysql57-community-release-el7-10.noarch 1/1
已安装:
mysql57-community-release.noarch 0:el7-10
完毕!
安装MySQL
[root@localhost ~] yum -y install mysql-community-server
..............
作为依赖被安装:
mysql-community-client.x86_64 0:5.7.28-1.el7 mysql-community-common.x86_64 0:5.7.28-1.el7
作为依赖被升级:
openssl.x86_64 1:1.0.2k-19.el7 openssl-libs.x86_64 1:1.0.2k-19.el7
postfix.x86_64 2:2.10.1-7.el7
替代:
mariadb-libs.x86_64 1:5.5.52-1.el7
完毕!
启动MySQL
[root@localhost ~] systemctl start mysqld.service
查看MySQL运行状态
[root@localhost ~] systemctl status mysqld.service
设置MySQL自启动
[root@localhost ~] systemctl enable mysqld
配置MySQL
在/etc/my.cnf的[mysqld]中增加如下内容:
[root@localhost ~] vim /etc/my.cnf
#不添加则在设置MySQL新密码时会错
validate_password=off
#用于设置MySQL的字符集
character_set_server=utf8
#用于设置MySQL的远程连接
skip-name-resolve
重新启动MySQL
[root@localhost ~] systemctl restart mysqld.service
如果这个步骤失败,查看错误日志:
grep "error" /var/log/mysqld.log
#提示如下错误
[ERROR] unknown variable 'validate_password=off
此时使用重置密码1操作
重置密码1:
#进入配置文件,将刚刚添加的语句validate_password=off删除
[root@localhost ~] vim /etc/my.cnf
#在配置文件中添加语句
skip-grant-tables
#保存退出
进入到终端当中,敲入 mysql -u root -p 命令然后回车,当需要输入密码时,直接按enter键,便可以不用密码登录到数据库当中
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
//如果此命令报错,执行下面语句后重试
mysql> flush privileges;
然后再次操作配置文件,删除刚刚那个跳过密码验证的配置即可,此时密码已经设置好,登录时输入刚刚修改的密码即可进入,完成这步后跳过下面的重置密码2操作,继续设置MySQL可以远程访问。
重置密码2:此时MySQL已经开始正常运行,不过要想进入MySQL还得先找出此时root用户的密码,通过如下命令可以在日志文件中找出密码:
[root@localhost ~] grep "password" /var/log/mysqld.log
2020-10-17T07:00:52.740835Z 1 [Note] A temporary password is generated for root@localhost: **l0hN)kEXugYv**
2020-10-17T07:14:54.867706Z 3 [Note] Access denied for user 'root'@'localhost' (using password: YES)
登录MySQL
[root@localhost ~] mysql -uroot -p
输入:l0hN)kEXugYv 进入到MySQL
输入初始密码,此时不能做任何事情,因为MySQL默认必须修改密码之后才能操作数据库:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
设置MySQL可以远程访问
mysql>grant all privileges on *.* to 'root'@'%' identified by '密码' with grant option;
此时可以使用我们的数据库客户端工具进行远程连接,如果连接不上,重启MySQL后再测试
测试成功后,退出MySQL
mysql> exit;
卸载Yum Repository,否则每次yum操作都会自动更新
[root@localhost ~] yum -y remove mysql57-community-release-el7-10.noarch
测试远程连接,连接未成功,需要再次关闭防火墙,重启MySQL
关闭防火墙:
[root@localhost ~] systemctl stop firewalld.service
如果登录数据库操作如下报错,是由于曾经升级过数据库,升级完后没有使用
mysql_upgrade升级数据结构造成的。
EROR 3009 (HY000): Column count of mysql.user is wrong......Plese use mya _ungrae to fx this eror.
执行如下命令即可;
[root@localhost ~]# mysql_upgrade -uroot -p
Enter password:
Checking if update is needed.
Checking server version.
Running queries to upgrade MySQL server.
Checking system database.
mysql.columns_priv OK
mysql.db OK
mysql.engine_cost OK
mysql.event OK
mysql.func OK
mysql.general_log OK
mysql.gtid_executed OK
mysql.help_category OK
mysql.help_keyword OK
mysql.help_relation OK
mysql.help_topic OK
mysql.innodb_index_stats OK
mysql.innodb_table_stats OK
mysql.ndb_binlog_index OK
mysql.plugin OK
mysql.proc OK
mysql.procs_priv OK
mysql.proxies_priv OK
mysql.server_cost OK
mysql.servers OK
mysql.slave_master_info OK
mysql.slave_relay_log_info OK
mysql.slave_worker_info OK
mysql.slow_log OK
mysql.tables_priv OK
mysql.time_zone OK
mysql.time_zone_leap_second OK
mysql.time_zone_name OK
mysql.time_zone_transition OK
mysql.time_zone_transition_type OK
mysql.user OK
Upgrading the sys schema.
Checking databases.
sys.sys_config OK
Upgrade process completed successfully.
Checking if update is needed.