linux - 安装mysql

下载

https://downloads.mysql.com/archives/community/

根据自己的 linux,选择 mysql 版本,我的 linux 版本是 Alibaba Cloud Linux 3.2104 LTS 64 位,
选择:mysql-8.0.32-linux-glibc2.12-x86_64.tar

安装主程序

将安装包上传到 linux 系统,解压之后,就完成主程序的安装了。

数据和主程序的文件夹,可以分开指定,因此主程序不需要很大的磁盘控件,放在自己喜欢的位置即可。

本次部署,我将主程序,安装到了 /usr/local/mysql 目录。

配置文件

# 新建 mysql 配置文件
touch /etc/my.cnf

# 编辑文件
vim /etc/my.cnf

将下列内容复制到 my.cnf 文件中,可按需调整内容。

[mysqld]
# 程序路径:主程序安装路径
basedir=/usr/local/mysql
# 数据路径:包括各类日志、数据库文件等等,一般设置这个就够用了
datadir=/usr/local/mysql/data

# socket 文件:默认使用 datadir
# socket=/usr/local/mysql/data/mysql.sock
# 错误日志:默认使用 datadir
# log-error=/usr/local/mysql/data/error.log
# pid 文件:默认使用 datadir
# pid-file=/usr/local/mysql/data/mysql.pid

# 文件软连接
symbolic-links=0

# 解决高版本产生 1055 异常报错的问题
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION


# 服务 id:做集群的时候,需要保证唯一
# server-id = 1

# binlog 日志:默认使用 datadir,其中最后一个 binlog 为文件名
# log-bin=/usr/local/mysql/data/binlog
# 集群同步时忽略的数据库
# binlog-ignore-db=mysql

# 是否只读:1 代表只读, 0 代表读写
# read-only=0

# 监听端口
# port = 3306  
# 监听的 ip 地址
# bind-address = 0.0.0.0

环境变量

设置完环境变量之后,可以在任意位置使用 mysql 命令,这一步不是必须的,不设置不影响程序运行。

# 编辑文件
vim /etc/profile

# 复制下列所有内容,粘贴在文件末尾
export MYSQL_HOME=/usr/local/mysql
export MYSQL_PATH=$MYSQL_HOME/bin
export PATH=$PATH:$MYSQL_PATH

# 立即生效
source ~/.bash_profile

# 查看环境变量
env

增加用户组

需要避免所有人都用 root 账号,创建一个 mysql 专用账号,注意这是 linux 系统的用户

# 创建用户组
groupadd mysql
# 创建用户
useradd -r -g mysql mysql
# 设置密码
passwd [user]

启动数据库

# 初始化,一定要保留执行结果,执行结果的最后一行,包含初始化密码,后续操作需要这个密码
/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

# 直接执行通常会报错,需要先执行下一句
yum install -y libaio

# 重新初始化,一定要保留执行结果,执行结果的最后一行,包含初始化密码,后续操作需要这个密码
/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

# 启动 mysql
/usr/local/mysql/support-files//mysql.server start

# 重启 mysql,如果你需要变动 my.cnf 配置,重启即可
/usr/local/mysql/support-files//mysql.server restart

开机自启

高版本的 linux 系统,这样设置可能无效,要通过 systemctl enable 命令设置自启。

# 创建一个同步链接(使用 cp 命令也行)
# 完成这个命令之后,就可以使用 service 命令的方式启动 mysql
ln -s /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql 

# 添加可执行权限
chmod +x /etc/init.d/mysql 

# 注册启动服务
chkconfig --add mysql 

# 查看是否添加成功
chkconfig --list 

# 如果 2345 不是 on 的状态,再执行这个
chkconfig --level 2345 mysql on 

# 注意:卸载 mysql 的时候,要记得清除文件 /etc/init.d/mysql 

初始化数据库

如果启动数据库过程中,忘记了初始密码,除了重装之外,可以使用下面这个手段:

修改 my.cnf 文件,在 mysqlId 段落,添加下面这一行,之后不用密码就能登录。

修改 .cnf 文件之后,需要执行 service mysql restart 进行重启生效,操作结束之后记将配置文件还原。

[mysqld]

skip-grant-tables

下面开始正式初始化

-- 登录账号
mysql -u root -p

-- 修改了 cnf 文件,有时候会无法保存数据,那就先执行一下这一句
flush privileges;

-- 修改密码(两个命令都可用)
-- SET PASSWORD = PASSWORD('root');

-- 修改密码(两个命令都可用)
alter user 'root'@'localhost' identified by 'root';

-- 密码永不过期
alter user 'root'@'localhost' password expire never;

-- 允许任何主机登录
update user set host = '%' where user = 'root';

-- 载入信息使之生效
flush privileges;

一些报错问题

老版本 navicat 登录账号可能会报错,报错信息包含: “caching_sha2_password……” ,这是因为加密规则不兼容导致,需要指定加密规则:mysql_native_password。

alter user 'root'@'localhost' identified with mysql_native_password by 'root';

安装 MySQL-8 的时候,尽量重新授权一次,确保拥有所有权限,后期发现有权限缺失的情况

GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost';

防火墙开放 3306

添加防火墙策略,一般命令如下。

如果是生产环境,先询问客户,不要擅自禁用、打开防火墙;如果是云平台(阿里云),需要在平台上配置。

firewall-cmd --list-all
firewall-cmd --add-port=3306/tcp --permanent
firewall-cmd --reload
firewall-cmd --list-all

posted on 2023-06-06 10:19  疯狂的妞妞  阅读(139)  评论(0编辑  收藏  举报

导航