本文已参与「新人创作礼」活动,一起开启掘金创作之路。
此次安装,经过十几次的安装与卸载,是可以正常使用的;
这里只记录了二进制文件方式安装,当然还有yum、rpm、docker等方式,这里就不多做介绍;
环境备注
操作系统 CentOS 7.7 64bit
MySQL 64bit 8.0.27 Linux - Generic
通用二进制文件方式
此方式安装优势
- 避免与其它依赖冲突
- 使用编译器进行预编译后构建性能更佳
安装环境
清理 mariadb
搜索
rpm -qa|grep mariadb
如果存在,则删除
删除
rpm -e --nodeps mariadb-libs
libaio 库
搜索 libaio 库
# yum 系统
yum search libaio
# apt 系统
apt-cache search libaio
如果没有 libaio 库,则需要执行安装;
如果有,则跳过下一步
安装 libaio 库
# yum 系统
sudo yum install -y libaio
# apt 系统
sudo apt-get install -y libaiol
注意:如果安装了 libaio 库后,还提示 libaio.so.1 等类似的库,直接运行 yum install xxx 即可,缺什么install什么
检查配置文件
检查 /etc/my.cnf 和 /etc/mysql 文件,如果存在则删除它们
下载MySQL Tar 包
网址
32位
选择:Linux - Generic (glibc 2.12) (x86, 32-bit), Compressed TAR Archive
64位
选择:Linux - Generic (glibc 2.12) (x86, 64-bit), Compressed TAR Archive
直链下载
# https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.27-linux-glibc2.12-x86_64.tar.xz
cd /usr/local/
wget https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.27-linux-glibc2.12-x86_64.tar.xz
添加用户组
sudo groupadd mysql
sudo useradd -r -g mysql -s /bin/false mysql
解压文件
sudo tar xvf mysql-8.0.27-linux-glibc2.12-x86_64.tar.xz
创建符号链接
sudo ln -s /usr/local/mysql-8.0.27-linux-glibc2.12-x86_64 mysql
赋予权限
cd mysql
sudo mkdir mysql-files
sudo chmod 750 mysql-files
sudo chown -R mysql .
sudo chgrp -R mysql .
初始化 MySQL
my.cnf(配置忽略表名大小写, 可选)
由于需要设置表名忽略大小写,所以需要在 my.cnf 中加入以下内容
注意:如果没有 my.cnf 则手动在 /etc/my.cnf 创建一个
[mysqld]
lower_case_table_names=1
initialize
sudo bin/mysqld --initialize --user=mysql --lower-case-table-names=1
初始化完成后,会打印出一个临时密码,日志如下
密码要记住,待会需要使用这个密码登陆mysql
注意:如果选择不配置忽略表名大小写,这里的--lower-case-table-names=1需要去掉
2022-01-01T08:26:50.458169Z 0 [System] [MY-013169] [Server] /usr/local/mysql-8.0.27-linux-glibc2.12-x86_64/bin/mysqld (mysql ver in progress as process 12616
2022-01-01T08:26:50.473404Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2022-01-01T08:26:51.700329Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2022-01-01T08:26:53.536812Z 0 [Warning] [MY-013746] [Server] A deprecated TLS version TLSv1 is enabled for channel mysql_main
2022-01-01T08:26:53.536866Z 0 [Warning] [MY-013746] [Server] A deprecated TLS version TLSv1.1 is enabled for channel mysql_main
2022-01-01T08:26:53.651742Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: k+sETpaqg0Tz
经测试,随机生成的密码如果包含了:“;”、“>”、“_”等符号,在登陆 MySQL时无法识别
需要在特殊符号前面加上 “\” 转义字符
设置 SSL
sudo bin/mysql_ssl_rsa_setup
设置所有权
- 将二进制文件的所有权更改为 root
- 将数据文件的所有权更改为 mysql
sudo chown -R root .
sudo chown -R mysql data mysql-files
复制启动脚本到 init.d
sudo cp support-files/mysql.server /etc/init.d/mysql
设置环境变量
此方式是临时的,如果关闭就没了
export PATH=$PATH:/usr/local/mysql/bin
可以在配置文件中永久配置
sudo vi /etc/profile
# profile 底部添加
MYSQL_HOME=/usr/local/mysql
PATH=$PATH:$MYSQL_HOME/bin
export MYSQL_HOME
目录展示
bin mysqld 服务器、客户端和工具集程序
data 日志文件、数据库
docs info 格式的 MySQL 手册
include 包含(header)文件
lib 库
LICENSE
man UNIX 手册页面
mysql-files
README
share 其他支持文件,包括错误消息、示例配置文件以及用于数据库安装的 SQL 语句
support-files
启动 MySQL
使用服务
sudo service mysql start
使用 init.d
sudo /etc/init.d/mysql start
如果没找到此命令,则查看上面步骤:复制启动脚本到 init.d
第一次启动成功后,会打印如下日志,意思是将启动日志放入了此路径
Starting MySQL.Logging to '/usr/local/mysql/data/localhost.localdomain.err'.
. SUCCESS!
登陆 MySQL
mysql -u root -pk+sETpaqg0Tz
-p:后面拼接的是上面日志打印的密码, 需要换成你自己的
自定义 root 用户密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'mysql2022';
mysql2022:是自定义的密码
退出登陆
exit
停止 MySQL
安全停止
mysqladmin -uroot -p shutdown
使用服务
sudo service mysql stop
使用 init.d
sudo /etc/init.d/mysql stop
查看状态
使用服务
sudo service mysql status
使用 init.d
sudo /etc/init.d/mysql status
卸载 MySQL
移除符号链接
检查 mysql 指向位置
sudo ls -lh mysql
删除 mysql
sudo rm mysql
sudo rm -r mysql-8.0.27-linux-glibc2.12-x86_64
sudo rm /etc/init.d/mysql