关于MySQL的版本选择:5.7最多,但8.0是未来~
1、Windows下MySQL安装
待迁移,todo…
2、Linux下MySQL的安装
2.1 安装前说明
todo…
2.2 MySQL的Linux安装
1、MySQL版本说明
- MySQL Community Server 社区版本,开源免费,自由下载,但不提供官方技术支持,适用于 大多数普通用户;
- MySQL Enterprise Edition 企业版本,需付费,不能在线下载,可以试用30天;提供了更多的 功能和更完备的技术支持,更适合于对数据库的功能和可靠性要求较高的企业客户;
- MySQL Cluster 集群版,开源免费;用于架设集群服务器,可将几个MySQL Server封装成一个 Server;需要在社区版或企业版的基础上使用;
- MySQL Cluster CGE 高级集群版,需付费;
2、下载MySQL指定版本
下载地址:https://www.mysql.com/downloads/
1、选择社区版,点击 MySQL Community Server 进行下载:https://dev.mysql.com/downloads/mysql/
2、选择适合的版本,这里选择红帽,x86架构64为的Linux操作系统
3、CentOS7下检查MySQL依赖
3.1 检查/tmp临时目录权限
由于mysql安装过程中,会通过mysql用户在/tmp目录下新建tmp_db文件,所以请给/tmp较大的权限;执行
$ chmod -R 777 /tmp
3.2 安装前,检查依赖
$ rpm -qa|grep libaio
$ rpm -qa|grep net-tools
如果存在libaio包,以及net-tools包,则会按照如下显示:
如果不存在需要到centos安装盘里进行rpm安装;安装linux如果带图形化界面,这些都是安装好的;
4、CentOS7下MySQL安装过程
4.1 执行安装脚本
将下载的安装包解压后,只需要将如下依赖复制上传到Linux主机上的 /opt 目录下,之后,按照顺序执行如下命令(必须按照先后顺序,不信你试试/(ㄒoㄒ)/~~)
$ rpm -ivh mysql-community-common-8.0.25-1.el7.x86_64.rpm
$ rpm -ivh mysql-community-client-plugins-8.0.25-1.el7.x86_64.rpm
$ rpm -ivh mysql-community-libs-8.0.25-1.el7.x86_64.rpm
$ rpm -ivh mysql-community-client-8.0.25-1.el7.x86_64.rpm
$ rpm -ivh mysql-community-server-8.0.25-1.el7.x86_64.rpm
在执行第三条语句时,如果有如下报错信息:
一个命令:yum remove mysql-libs
解决,清除之前安装过的依赖即可;然后重新执行第三条报错的,往后继续执行,待执行完毕所有脚本,至此,安装完成;
4.2 查看MySQL版本
执行如下命令,查看MySQL版本,如果成功表示安装MySQL成功
$ mysql --version
或
$ mysqladmin --version
4.3 服务的初始化
为了保证数据库目录与文件的所有者为 mysql 登录用户,如果你是以 root 身份运行 mysql 服务,需要执 行下面的命令初始化
$ mysqld --initialize --user=mysql
说明:--initialize
选项默认以“安全”模式来初始化,则会为 root 用户生成一个密码并将 该密码标记为过期,登录后你需要设置一个新的密码;生成的 临时密码 会往日志中记录一份;
$ cat /var/log/mysqld.log
4.4 启动MySQL,查看状态
此时,MySQL服务尚未启动
# 启动
$ systemctl start mysqld
# 关闭
$ systemctl stop mysqld
# 重启
$ systemctl restart mysqld
# 查看状态
$ systemctl status mysqld
4.5 查看MySQL服务是否自启动
默认是enabled(自启动)
$ systemctl list-unit-files|grep mysqld.service
如不是enabled可以运行如下命令设置自启动
$ systemctl enable mysqld.service
如果希望不进行自启动,运行如下命令设置
$ systemctl disable mysqld.service
2.3 MySQL登录
1、首次登录
通过mysql -uroot -p
进行登录,在Enter password:录入初始化密码
2、修改密码
因为初始化密码默认是过期的,所以查看数据库会报错
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
5.7版本之后(不含5.7),mysql加入了全新的密码安全机制。设置新密码太简单会报错
修改后,重新登录 MySQL,使用命令就不会报错了
3、设置远程登录
todo…
2.4 MySQL 5.7安装
对比8.x,common->libs->client…
在安装过程中,如果有报错的,参考 8.x 进行修复执行即可;
$ rpm -ivh mysql-community-common-5.7.28-1.el7.x86_64.rpm
$ rpm -ivh mysql-community-libs-5.7.28-1.el7.x86_64.rpm
$ rpm -ivh mysql-community-client-5.7.28-1.el7.x86_64.rpm
$ rpm -ivh mysql-community-server-5.7.28-1.el7.x86_64.rpm
3、MacOS下MySQL的安装
3.1 下载MySQL
首先到Mysql社区下载对应安装包,下载地址:https://www.mysql.com/downloads/
选择合适的社区版进行下载
Apple M1 版本选择 Arm64 进行安装
3.2
todo
设置远程登录
当前问题
SQLyog 远程连接虚拟机内部 MySQL 服务器:默认情况下,是连接不成功的:
那么,如何进行排查呢?排查的思路是什么?
确认网络
1、确认网络是否能够 ping 通;
2、排查网络端口号是否开放;
在远程机器上使用 talnet 命令保证端口号开放访问,发现,访问是失败的,是防火墙的问题导致的;
拓展:开启 telnet 功能
关闭 Linux 上的防火墙:
# 查看防火墙状态
$ systemctl status firewalld
# 停止防火墙
$ systemctl stop firewalld
# 设置 防火墙永久关闭
$ systemctl disable firewalld
可以看到,这里只允许 root 用户在本机登录,因此这里需要修改,即通过update语句修改host字段的值,也就是允许哪些客户端进行连接;
select host, user from user;
这里设置成 % 通配符,实际开发场景中禁止这样操作:
update user set host = '%' where user = 'root';
修改成功后,一定要刷新下权限;
flush privileges;
之后,再次测试,配置新连接报错,错误号码 2058,分析是 mysql 密码加密方法变了;
alter user 'root'@'%' identified with mysql_native_password by 'abc123';
:::info todo(作为兴趣了解,目前没必要知道):MySQL 8 的密码强度评估(p100 后半部分) :::
字符集
原因:
因此,使用 MySQL 5.x,安装后的第一件事就是修改字符集;
$ systemctl restart mysqld
各级别的字符集
MySQL 4个级别的字符集,粒度是很小的,也就是说甚至可以对某一列,进行单独的设置字符集;
也就解释了,为什么在配置文件中设置编码字符集的时候,为什么只需要设置 服务器级别的了;