Linux实验:MySQL的安装和配置
题目要求
使用SSH客户端(如SecureCRT)远程连接Linux操作系统,实现以下功能:
(1)下载安装MySQL社区版服务器。
(2)设置MySQL服务中root用户的密码。
(3)允许root用户远程登陆和操作MySQL。
(4)创建一个学生学号和姓名数据,并能将中文显示出来。
要求分别在本地和云端操作成功。
编程环境
本地
本地操作系统:Windows 10
本地虚拟机运行平台:VMware Workstation Pro 14
本地虚拟机镜像:CentOS-7-x86_64-Minimal-1908.iso
云端
云服务器提供商:阿里云计算有限公司
Linux发行版本及版本号:CentOS 7.6 64位
客户端
SecureCRT
命令实现
本人安装的是MySQL 5.7版本,其他版本特别是MySQL 8.0开始的版本的安装和配置可能有所变化。
1、下载安装MySQL服务
从MySQL官方的Yum Repository中下载rpm软件包
wget –c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
提醒:
(1)之所以要进行这一步操作,是因为CentOS下的软件包管理器yum中暂时没有MySQL社区版服务器mysql-community-server的安装包。
(2)这里使用到了wget命令,如果没有该命令,则先执行此句进行下载:yum -y install wget
(3)这里下载的是MySQL 5.7,要想下载其他版本,请到MySQL官网中寻找想要的rpm软件包(地址:https://dev.mysql.com/downloads/repo/yum/),将下图举例的划线部分替换掉mysql57-community-release-el7-10.noarch.rpm即可。
(4)完成本次操作后,rpm软件包会被默认下载到当前目录,可以使用 ls -l 或 ll 命令查看到下载好的rpm软件包。
安装下载的rpm软件包
yum -y install mysql57-community-release-el7-10.noarch.rpm
安装MySQL社区版服务器
yum -y install mysql-community-server
查看MySQL版本
mysql -V
这里是来检验MySQL服务是否安装成功。
2、开放MySQL的默认端口3306
# 重启防火墙,以保证防火墙一定是开启的
systemctl restart firewalld.service
# 在防火墙添加端口3306且设置永久开启
firewall-cmd --zone=public --add-port=3306/tcp --permanent
# 重新加载防火墙,使上一步操作生效
firewall-cmd --reload
# 查看3306端口是否开放
firewall-cmd --zone=public --query-port=3306/tcp
如果是Linux云服务器,则还要在阿里云服务器控制台增加MySQL默认端口3306的安全组规则,才能保证MySQL服务能被访问,操作结果如下图。具体操作请看博客《Linux脚本编程:sudo命令下安装ssh服务并自定义端口和允许root登陆》中代码实现部分的注意事项。
3、设置MySQL服务
# 重启MySQL服务,不用start用restart是为了避免读者之前启动过MySQL服务且没有关闭
systemctl restart mysqld
# 检查MySQL服务的运行状态,有running字样说明启动成功
systemctl status mysqld
# 设置MySQL服务开机自启动,此步为防止以后重启了Linux后使用MySQL前忘记启动服务,读者视自身情况选择是否执行本命令
systemctl enable mysqld
4、修改root用户默认密码
获取安装时MySQL自动对root设置的临时密码
# 用rpm包安装的mysql的临时密码默认在/var/log/mysqld.log里
grep 'temporary password' /var/log/mysqld.log
下图中绿色圆圈处的内容即为临时密码。
使用root用户及其临时密码登录MySQL
mysql -u root -p
本人在这一步之前,曾不知道有临时密码的存在,直接输入mysql -u root试图免密登陆,但失败了,系统提示要输入密码。失败后了解并按上一步操作获得临时密码后进行本步操作,却出现mysql.sock文件路径不正确的错误。最后个人的解决方法如下:
(1)清除MySQL带来的数据:rm -rf /var/lib/mysql
(2)重启MySQL服务:systemctl restart mysqld
(3)再次执行上一步的获取临时密码操作,因为临时密码可能变了。
(4)执行本步操作。
设置root用户的新密码
ALTER USER 'root'@'localhost' IDENTIFIED BY '密码';
MySQL会进行密码强度校验,要求密码必须包含大小写字母、特殊符号和数字,并且长度大于8位。
使用root新密码登录MySQL
# 退出当前的MySQL登录状态
exit
mysql -u root -p
# 本步退出是为了下一步的操作
exit
5、配置MySQL默认编码为utf-8
# 进入MySQL配置文件
vi /etc/my.cnf
# 按下i键进入编辑模式,在[mysqld]所在行的下一行插入以下两行内容:
character_set_server=utf8
init_connect='SET NAMES utf8'
# 按下esc键退出编辑模式
# 保存并退出文件
:wq
# 重启MySQL服务
systemctl restart mysqld
# 登陆MySQL查看默认编码,最终结果如下图
mysql -u root –p
show variables like '%character%';
本步操作是为了让MySQL能正确显示中文。
6、授权root远程登录
# 允许root用户远程登录数据库并拥有所有操作权限(其他MySQL版本的写法可能有所不同)
GRANT ALL PRIVILEGES ON *.* to root@'%' IDENTIFIED BY 'root的密码';
# 刷新权限相关表
flush privileges;
# 重启MySQL服务
exit # 退出当前的MySQL登录状态
systemctl restart mysqld
# 检查root用户权限,结果如下图
mysql -u root –p
SHOW GRANTS FOR root;
注意MySQL语句的最后一定要有英文符号的分号。
7、创建数据
# 创建名为experiment的数据库,并查看数据库experiment是否存在
CREATE DATABASE experiment;
SHOW DATABASES;
# 在数据库experiment中创建名为students的数据表,并查看数据表students是否存在
USE experiment;
CREATE TABLE students (id varchar(25) NOT NULL, name varchar(25) NOT NULL, PRIMARY KEY (id));
DESC students;
# 插入一条数据,并查看该数据是否存在
INSERT INTO students VALUES ('1','张三');
SELECT * FROM students;
# 完成题目所有要求,退出MySQL
exit
MySQL语句不区分大小写,建议用大写,用户自定义的内容用小写,方便阅读。
如果文章内容出错或者您有更好的解决方法,欢迎到评论区指正和讨论!