安装
官方文档:https://dev.mysql.com/doc/refman/8.4/en/installing.html
Linux
离线安装
https://dev.mysql.com/downloads/
CentOS8 Stream安装MySQL8.0.17
这里以CentOS8 Stream系列为例
下载 RPM Bundle这个,这个是最全的,但是也包含了一些可能用不到的包
通过tar命令解压后,包含下面这些rpm包
[root@localhost mysql_learn]# tar -xvf mysql-8.0.17-1.el8.x86_64.rpm-bundle.tar
mysql-community-server-debug-debuginfo-8.0.17-1.el8.x86_64.rpm
mysql-community-server-debuginfo-8.0.17-1.el8.x86_64.rpm
mysql-community-debugsource-8.0.17-1.el8.x86_64.rpm
mysql-community-libs-8.0.17-1.el8.x86_64.rpm
mysql-community-server-debug-8.0.17-1.el8.x86_64.rpm
mysql-community-test-8.0.17-1.el8.x86_64.rpm
mysql-community-test-debuginfo-8.0.17-1.el8.x86_64.rpm
mysql-community-server-8.0.17-1.el8.x86_64.rpm
mysql-community-client-8.0.17-1.el8.x86_64.rpm
mysql-community-libs-debuginfo-8.0.17-1.el8.x86_64.rpm
mysql-community-devel-8.0.17-1.el8.x86_64.rpm
mysql-community-common-8.0.17-1.el8.x86_64.rpm
mysql-community-debuginfo-8.0.17-1.el8.x86_64.rpm
mysql-community-client-debuginfo-8.0.17-1.el8.x86_64.rpm
通过rpm -ivh ./*.rpm
批量安装多个rpm包
如果有依赖缺失问题,可参考下面的方案安装缺失的依赖后再重新安装
pkgconfig(openssl) is needed by mysql-community-devel-8.0.17-1.el8.x86_64
缺少openssl-devel这个包,可通过yum install openssl-devel -y进行安装
可能会有perl相关的依赖缺失,可以先安装perl,yum install perl
perl(JSON) is needed by mysql-community-devel-8.0.17-1.el8.x86_64
缺少perl-JSON这个包,yum install perl-JSON -y进行安装
systemctl start mysqld或者service start mysqld
查看mysql配置文件/etc/my.cnf的错误日志存放位置
从第一行ERROR开始看:
2024-09-23T14:25:06.034602Z 1 [ERROR] [MY-012530] [InnoDB] Unknown redo log format (4). Please follow the instructions at http://dev.mysql.com/doc/refman/8.0/en/ upgrading-downgrading.html.
因为我操作的机器上之前装过8.0.18版本的mysql,之前建的表还在,所以报了格式不兼容问题
于是我删除/var/lib/mysql目录,重新启动systemctl start mysqld
,会重新生成/var/lib/mysql目录及相应文件,此时就可以启动成功了
安装指定版本
如果要安装指定版本的mysql,可以在下面这个界面选择 MySQL Community Server
然后选择Archives
然后进入下面这个页面
还是下载RPM包,然后按离线安装方式进行安装即可
Ubuntu 21.04 LTS安装mysql5.7
操作环境:VMWare虚拟机,Ubuntu Server 21.04 LTS
选择以下版本安装:
我只下载了下面几个
2.然后通过共享目录传到虚拟机里,切到安装包所在的路径,通过dpkg安装即可
sudo dpkg -i my*
如果出现依赖缺失错误,如下图所示
再执行命令:sudo apt -f install
然后就弹出设置root用户密码(123456),设置完后就安装完成了
3.登进去查看版本:mysql -uroot -p123456
在线安装
在线安装这种方式,不同的包管理器需要不同的仓库地址
官方一般只会维护一个最新版本的地址,如果要下载指定版本的,只能到处找可用的地址了
可以把鼠标放到这个超链接上,拿到其访问的地址
得到下面这个地址:https://dev.mysql.com/get/mysql84-community-release-el9-1.noarch.rpm,这个是最新的版本
有了这个地址,可以在服务器上通过curl,将其下载到服务器
安装指定版本
如果想下载指定版本,必须知道mysql各版本的yum仓库文件地址,但是目前好多都失效了
以下命令将启用安装 MySQL 所需的 yum 存储库
rpm -Uvh https://repo.mysql.com/mysql80-community-release-el7-3.noarch.rpm
安装MySQL 8 的指定版本,可以执行命令
yum --enablerepo=mysql80-community install mysql8.0.X。
比如要安装8.0.17版本,执行
yum --enablerepo=mysql80-community install mysql*8.0.17*
报如下错误:
尝试通过:yum install mysql-community-server-8.0.17-1.el8.x86_64进行安装,但是失败了,提示没有这个包
[root@localhost ~]# yum install mysql-community-server-8.0.17-1.el8.x86_64
Last metadata expiration check: 3:58:47 ago on Mon 23 Sep 2024 04:50:12 AM EDT.
No match for argument: mysql-community-server-8.0.17-1.el8.x86_64
Error: Unable to find a match: mysql-community-server-8.0.17-1.el8.x86_64
Windows
Windows安装就不再赘述了,网上有很多文章讲解,一般就是下载exe文件或者msi文件,然后通过安装程序操作即可
配置文件
linux版本安装配置文件路径位于/etc/my.cnf
或者/etc/my.cnf.d/server.cnf
可以通过mysql --help | grep my.cnf来进行查看
[root@localhost ~]# mysql --help | grep my.cnf
order of preference, my.cnf, $MYSQL_TCP_PORT,
/etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~/.my.cnf
密码问题
密码可以在/var/log/mysqld.log文件中找到,会生成一个临时密码
使用这个密码登入mysql,第一次登录在执行操作前需要重置密码
mysql> select @@version;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
可通过ALTER USER 'root'@'localhost' IDENTIFIED BY 'your_password';
修改密码
如果碰到ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
自定义密码太简单,出现了不符合密码策略的问题
修改之后,要执行flush privileges;
这条sql修改的密码才能生效
如果遇到
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
此时修改策略,及密码长度
set global validate_password_policy=0;
set global validate_password_length=1;
validate_password_policy取值
0 or LOW 只验证长度
1 or MEDIUM 验证长度、数字、大小写、特殊字符
2 or STRONG 验证长度、数字、大小写、特殊字符、字典文件
如果遇到
ERROR 1193 (HY000): Unknown system variable ‘validate_password_policy’
这是因为validate_password插件默认是没有激活的
可以通过install plugin validate_password soname 'validate_password.so';
这条sql安装该插件,但是执行sql前需要修改密码,因此只能先设置一个符合要求的密码,然后再安装插件
mysql> select plugin_name, plugin_status from information_schema.plugins where plugin_name like 'validate%';
Empty set (0.00 sec)
mysql> install plugin validate_password soname 'validate_password.so';
Query OK, 0 rows affected, 1 warning (0.01 sec)
mysql> SHOW VARIABLES LIKE 'validate_password%';
+--------------------------------------+--------+
| Variable_name | Value |
+--------------------------------------+--------+
| validate_password.check_user_name | ON |
| validate_password.dictionary_file | |
| validate_password.length | 8 |
| validate_password.mixed_case_count | 1 |
| validate_password.number_count | 1 |
| validate_password.policy | MEDIUM |
| validate_password.special_char_count | 1 |
| validate_password_check_user_name | ON |
| validate_password_dictionary_file | |
| validate_password_length | 8 |
| validate_password_mixed_case_count | 1 |
| validate_password_number_count | 1 |
| validate_password_policy | MEDIUM |
| validate_password_special_char_count | 1 |
+--------------------------------------+--------+
14 rows in set (0.01 sec)
插件安装完后就可以继续修改密码了
卸载
一般有些Linux发行版会自带mariadb的依赖,可以安装前先清除这个依赖
sudo yum remove mariadb mysql