3.安装MySQL
有关在Linux系统下安装MySQL的介绍,查看DataWhale的Alias与知乎的Liuuu写的这两篇文章就够了。这里只是针对安装过程中遇见的问题进行补充。
注意:我用的是阿里云服务器,然后操作系统为CentOs版本的Linux,准备安装的MySQL版本是mysql80-community-release-el7-3.noarch.rpm。
在CentOS系统中默认是安装了 MariaDB 的,但是我们需要的是MySQL,我们可以直接下载安装MySQL, 安装MySQL可以覆盖MariaDB.
关于 MariaDB:
MariaDB 数据库管理系统是 MySQL 的一个分支, 主要由开源社区在维护, 采用 GPL 授权许可. 开发这个分支的原因之一是:甲骨文公司收购了 MySQL 后, 有将 MySQL 闭源的潜在风险, 因此社区采用分支的方式来避开这个风险. MariaDB 的目的是完全兼容 MySQL, 包括 API 和命令行, 使之能轻松成为 MySQL 的代替品. 但在两个分支经过了几年的各自迭代之后, 在一些方面二者出现了一些差异.
3.1 安装步骤
首先,从MySQL官网上下载 MySQL的Yum Repository
。根据CentOS和MySQL的版本,选择下载相对应的文件。本文选择红色方框的文件:
0. 选择安装文件夹
首先要选择合适的文件夹下载,我一般第三方软件,像是Java,MySQL都是放在/opt/SoftWare/里面。
cd /opt/SoftWare/
1. 下载MySQL Yum包
Yum是一个基于rpm的软件包管理器,它可以从指定的服务器自动下载rpm包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。
wget https://dev.mysql.com/get/mysql80-community-release-el7-2.noarch.rpm
2. 安装MySQL源
用yum命令安装下载好的 rpm 包:
yum -y install mysql80-community-release-el7-2.noarch.rpm
3. 安装MySQL服务器
yum -y install mysql-community-server
这一步由于要下载安装文件,可能会花一些时间。安装完成后就会覆盖掉之前的 mariadb。
3.2 数据库设置
4. 启动 MySQL
systemctl start mysqld.service
5. 检查MySQL是否启动成功
查看MySQL运行状态,Active后面的状态代表启功服务后为(running)active,停止后为inactive(dead)。
systemctl status mysqld.service
重新启动 Mysql 和停止 Mysql 的命令如下:
service mysqld restart #重新启动 Mysql
systemctl stop mysqld.service #停止 Mysql
6. 获取临时密码
此时 MySQL 已经开始正常运行,不过要想进入MySQL还得先找出此时root用户的密码,通过如下命令可以在日志文件中找出密码:
为了加强安全性,MySQL8.0为root用户随机生成了一个密码,在error log中,关于error log的位置,如果安装的是RPM包,则默认是/var/log/mysqld.log。只有启动过一次MySQL才可以查看临时密码。
使用命令:
grep 'temporary password' /var/log/mysqld.log
查看初始的随机密码,因为我重置过一次数据库,所以这里有两个随机密码,选择时间最新的。
7. 修改密码
登录 root 用户
mysql -u root -p
然后输入上述查到的初始密码。
登录后还不能做任何查询或建库操作,因为MySQL默认必须修改初始的随机密码之后才能操作数据库,否则会报错。这里假设修改密码为"PolyU.1234",默认密码策略要求密码必须是大小写祖母数字特殊字符的组合,至少8位。注意结尾要有分号,表示语句的结束。
ALTER USER 'root'@'localhost' IDENTIFIED BY 'PolyU.1234';
8. 设置开机自启动
设置开机自启动,然后重新加载新的unit配置文件:
systemctl enable mysqld
systemctl daemon-reload
9. 设置MySQL的字符集位UTF-8,令其支持中文
vim /etc/my.cnf
按字母i进入插入模式,新增[mysql],注意这里是[mysql]而不是已经存在的]mysqld],再在下面添加:
dafault-character-set=utf8
修改完,按ESC进入命令模式,然后输入:wq退出并保存。
10. 设置远程连接
首先,我们之前已经设置了root用户的host为localhost,也就是’host’@‘localhost’,这里更改为%,代表服务器远程连接。然后我们将远程连接的权限赋予root用户,并刷新所有用户权限。
UPDATE user SET host = "%" WHERE user='root';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
注意:如果这里按照DataWhale的文章上面操作,会报错。因为root用户已经存在,所以仅仅需要更改host的设置,而DataWhale的文章给的例子是在授权的同时新建’root’@’%'用户,同时这种写法也已经禁止了。所以以下两种写法都会报错:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'PolyU.1234' WITH GRANT OPTION;
语法错误,因为这种写法已经废弃。
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'PolyU.1234';
设置出错,用户此时为‘root’@‘localhost’。
11.重启MySQL
service mysqld restart #重新启动 Mysql
12. 开放3306端口
登录阿里云控制台设置->云服务器ECS->网络与安全->安全组->配置规则,开放3306端口。
13. 远程连接测试
14. 删除Yum
因为安装了Yum Repository,以后每次 yum 操作都会自动更新,如不需要更新,可以把这个 yum 卸载掉:
yum -y remove mysql80-community-release-el7-2.noarch
补充
-
在CentOS中,MySQL的主要配置所在的目录:
- /etc/my.cnf MySQL的主配置文件
- /var/lib/mysql MySQL数据库的数据库文件存放位置
- /var/log MySQL数据库的日志输出存放位置
-
设置表名为大小写不敏感
systemctl stop mysqld.service
停止MySQL数据库服务,修改vim/etc/my.cnf,在[mysqld]下面添加:
lower_case_table_names=1
这里的参数0表示区分大小写,1 表示不区分大小写。同时,做好数据备份,然后使用下述命令删除数据库数据(删除后, 数据库将恢复到刚安装的状态):
rm -rf /var/lib/mysql
重启数据库,此时数据库恢复到初始状态:
service mysql start
重复安装时的操作,查找临时密码再,再进行修改:
grep 'temporary password' /var/log/mysqld.log
刷新MySQL的系统权限相关表:
FLUSH PRIVILEGES;
此时,MySQL的表名的大小写不再敏感。