安装MySQL,基于官方推荐方式

为yum添加源

首先查看自己的服务器版本号:

[root@localhost ~]# uname -a
Linux localhost.localdomain 3.10.0-1160.25.1.el7.x86_64 #1 SMP Wed Apr 28 21:49:45 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux

访问MySQL官网的下载界面,找到与自己服务器版本el7相匹配的rpm文件,拷贝其下载地址,在CentOS中可以使用wget命令进行下载

[root@localhost ~]# wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm

也可以先用浏览器下载到本地,再用FTP拷贝到服务器上

然后执行以下命令,添加源:

[root@localhost ~]# rpm -Uvh mysql80-community-release-el7-3.noarch.rpm

安装MySQL

有了源之后,就可以执行yum命令进行安装了:

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

这个过程需要下载并安装,耗时可能会有些长

启动MySQL

  • 手动启动MySQL服务

安装完之后,需要我们手动启动MySQL服务,执行systemctl start mysqld.service进行启动

第一次启动会初始化一些数据,这个过程可能会花费一些时间

这一步也是有可能出问题的,如果之前旧的MySQL在/var/lib/ 下面有mysql目录(这是mysql主数据目录,所有的数据库、表之类都存放于此),则会报错:

initialize specified but the data directory has files in it. Aborting.

好在这个问题不难解决,删除这个数据目录再启动一次:

[root@localhost ~]# rm -rf /var/lib/mysql
  • 开机自启MySQL服务

可以先检查一下MySQL是否为开机自启状态,执行以下命令:

[root@localhost ~]# systemctl list-unit-files mysqld.service
UNIT FILE      STATE  
mysqld.service enabled

1 unit files listed.

此时输出中的enabled代表MySQL服务已处于开机自启状态

若是没有处于开机自启状态,可以执行systemctl enable mysqld.service,将服务设为开机自启

登录MySQL

初次启动完成后,会产生一个临时密码,在/var/log/mysqld.log文件里,可以执行以下命令,让包含临时密码的那一行高亮出来:

[root@localhost ~]# grep 'temporary password' /var/log/mysqld.log
2021-05-29T13:29:11.532182Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: v-:qXuPWH75t

最后的v-:qXuPWH75t就是root账户的临时密码,将其记下,用来初次登录MySQL,若执行后没有输出,则可能MySQL没有启动,先执行命令systemctl start mysqld启动MySQL后,再执行以上命令查看密码

每个人临时密码都不一样,记下自己文件中的

登录MySQL,输入:

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

回车后会出现

[root@localhost ~]# mysql -u root -p
Enter password:

将刚才的临时密码输入进去,回车即可进入MySQL

此时输入任何字符都不会被显示,主要是防密码泄露,输完密码直接敲回车就行

密码错了的话,就会显示这个:

[root@localhost ~]# mysql -u root -p
Enter password: 
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

若成功进入,则会显示以下大致内容:

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.25 MySQL Community Server - GPL
......
mysql>

成功进入MySQL后需要修改root账号的密码,临时密码下,很多操作都不可用,执行以下命令:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'Root@123456';

将命令中的Root@123456替换成自己的新密码

如果显示 Your password does not satisfy the current policy requirements,说明密码强度不够,想个复杂点的密码呀,骚年!

默认规则下,新密码需要8位以上,且包含大/小写字母,符号及数字

修改完成后,可以退出MySQL,使用新密码登录,此时可以在本机上,进行正常的增删改查操作了

远程登录MySQL

完成以上操作后,仅能通过本地访问MySQL,但很多时候,我们需要从另一台电脑上访问此数据库,下面我们对远程登录MySQL进行一下配置

首先,在装有MySQL的电脑上,输入用户密码登录MySQL:

[root@localhost ~]# mysql -u root -p
Enter password: 

切换到mysql数据库:

mysql>use mysql;

执行以下更新语句:

mysql>update user set host = '%' where user = 'root'; 

将root帐号的host改为%也就是说任意客户端皆可访问,也可以改为指定IP,那么就只允许指定的IP进行远程访问

最后刷新一下:

mysql>FLUSH PRIVILEGES; 

至此MySQL允许远程访问的配置已完成。

一般而言,若自己没有主动配置过,那么CentOS的防火墙一些常用端口,默认状态下是关闭的。
此时我们需要远程访问数据库,那么MySQL的3306端口就需要开放出来,否则还是无法访问数据库的。

可以参考以下命令:

# 查询端口是否开放
firewall-cmd --query-port=3306/tcp
# 开放80端口
firewall-cmd --permanent --add-port=3306/tcp
# 移除端口
firewall-cmd --permanent --remove-port=3306/tcp

# 重启防火墙(修改配置后要重启防火墙)
firewall-cmd --reload

# 参数解释
1、firwall-cmd:是Linux提供的操作firewall的一个工具;
2、--permanent:表示设置为持久;
3、--add-port:标识添加的端口;

配置完防火墙后,就可以尝试远程连接MySQL了。

忘记root密码

  1. 先停止MySQL服务
systemctl stop mysqld.service 
  1. 使用CentOS的编辑器vi,打开MySQL的配置文件

vi是Linux下系统自带的文本编辑器,可以理解为Windows上的记事本,关于vi的使用方法建议搜索相关教程

vi /etc/my.cnf
  1. 键一直翻页至配置文件底部,然后按End键将光标移至行末,按i键进入编辑模式,回车,在配置文件末尾追加一行:
skip-grant-tables
  1. 然后依次按下Esc``:``w``q,再按回车,表示存盘退出
  2. 再次启动MySQL
systemctl start mysqld.service
  1. 启动完成后登录MySQL,此时不需要密码直接进入:
mysql -u root -p
  1. 切换到mysql数据库:
use mysql;
  1. 更新root的密码:
update mysql.user set authentication_string = PASSWORD('新密码') where user='root'; 
  1. 刷新一下:
FLUSH PRIVILEGES;
  1. 退出MySQL,然后参考1-5步,将刚才为MySQL配置文件添加的skip-grant-tables去掉
  2. 使用新设置的密码登录MySQL
posted @ 2023-04-28 17:17  洗洗早睡啦  阅读(29)  评论(0编辑  收藏  举报