安装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密码
- 先停止MySQL服务
systemctl stop mysqld.service
- 使用CentOS的编辑器
vi
,打开MySQL的配置文件
vi
是Linux下系统自带的文本编辑器,可以理解为Windows上的记事本,关于vi
的使用方法建议搜索相关教程
vi /etc/my.cnf
- 按
↓
键一直翻页至配置文件底部,然后按End
键将光标移至行末,按i
键进入编辑模式,回车,在配置文件末尾追加一行:
skip-grant-tables
- 然后依次按下
Esc``:``w``q
,再按回车,表示存盘退出 - 再次启动MySQL
systemctl start mysqld.service
- 启动完成后登录MySQL,此时不需要密码直接进入:
mysql -u root -p
- 切换到mysql数据库:
use mysql;
- 更新root的密码:
update mysql.user set authentication_string = PASSWORD('新密码') where user='root';
- 刷新一下:
FLUSH PRIVILEGES;
- 退出MySQL,然后参考1-5步,将刚才为MySQL配置文件添加的
skip-grant-tables
去掉 - 使用新设置的密码登录MySQL