1.下载MySQL安装包
-p为下载到指定目录
wget -p /usr/local/secretCloud/soft https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.33-linux-glibc2.12-x86_64.tar.xz
如果下载太慢,可以先下载到本地,然后上传到服务器,下载地址:
https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.33-linux-glibc2.12-x86_64.tar.xz
2.解压压缩包至自己指定的目录下
进入存放mysql-8.0.33-linux-glibc2.12-x86_64.tar.xz文件的目录,解压文件到指定目录
tar -xvf mysql-8.0.33-linux-glibc2.12-x86_64.tar.xz -C /usr/local/secretCloud/soft
3.重命名 mysql-8.0.33-linux-glibc2.12-x86_64文件夹
还是在解压文件目录中,重命名文件
mv mysql-8.0.33-linux-glibc2.12-x86_64 mysql8.0.33
创建数据存放目录
mkdir /usr/local/secretCloud/soft/mysql8.0.33/data
创建成功后,mkdir /usr/local/secretCloud/soft/mysql8.0.33下会出现data目录,以后我们创建的数据库等等,都会出现在这里
4.配置环境变量
使用vim命令打开环境变量配置文件(如果提示【-bash: vim: 未找到命令】则先安装vim: sudo yum install vim)
编辑vim /etc/profile文件
vim /etc/profile
(1)按PageDown键,将光标移动到文件最后端键入下面两行内容。
(2) 按i键进入编辑文档模式。即可输入内容。
(3)这里我的mysql目录是这个,如果改了安装目录替换成自己的安装目录即可。
(4)先按ESC键,在按I键,进入编辑模式,先按ESC键,在输入:wq保存退出)
export PATH=$PATH:/usr/local/secretCloud/soft/mysql8.0.33/bin
(5)然后使用source命令重新加载此配置文件使配置生效。
source /etc/profile
4.创建用户组和密码
(1)创建用户
groupadd mysql
(2)创建用户组
useradd -g mysql mysql
(3)授权
chown -R mysql.mysql /usr/local/secretCloud/soft/mysql8.0.33
5.初始化数据库
注意:此处最好使用忽略表名大小写,千万不要使用区分大小写,mysql8以后不支持修改此配置,只能选择重新初始化mysql,要命!!!
如果有要求一定要区分,也可以使用,主要看自己需求,这里我选择忽略表名大小写。
(1)进入bin目录,初始化mysql
cd /usr/local/secretCloud/soft/mysql8.0.33/bin
# 不忽略表名大小写
./mysqld --user=mysql --basedir=/usr/local/secretCloud/soft/mysql8.0.33 --datadir=/usr/local/secretCloud/soft/mysql8.0.33/data/ --initialize
# 忽略表名大小写
./mysqld --user=mysql --lower-case-table-names=1 --basedir=/usr/local/secretCloud/soft/mysql8.0.33 --datadir=/usr/local/secretCloud/soft/mysql8.0.33/data/ --initialize
此时生成一个roor账号的临时密码,记录这个密码,后面会用到,这里我马赛克了
(2)进入数据库中的support-files目录
cd /usr/local/secretCloud/soft/mysql8.0.33/support-files/
使用mysql.server start 命令启动mysql服务
./mysql.server start
遇到了报错【./mysql.server:行239: my_print_defaults: 未找到命令
./mysql.server: 第 259 行:cd: /usr/local/mysql: 没有那个文件或目录
Starting MySQL ERROR! Couldn't find MySQL server (/usr/local/mysql/bin/mysqld_safe)
】
解决方法:将mysql.server文件中/usr/local/mysql 类型的所有路径,改为mysql实际安装路径,一共5处,不要改漏掉了
重新启动mysql服务
./mysql.server start
遇到了报错【Starting MySQL.2024-09-13T06:39:43.658959Z mysqld_safe error: log-error set to '/var/log/mariadb/mariadb.log', however file don't exists. Create writable for user 'mysql'.
ERROR! The server quit without updating PID file (/var/lib/mysql/lzsys.com.pid).
】
解决方法:
(1)编辑文件vim /usr/local/secretCloud/soft/mysql8.0.33/support-files/mysql.server
vim /usr/local/secretCloud/soft/mysql8.0.33/support-files/mysql.server
(2)在vim中 set nu打开行号显示
:set nu
# 找到
$bindir/mysqld_safe --datadir="$datadir" --pid-file="$mysqld_pid_file_path" $other_args >/dev/null & wait_for_pid created "$!" "$mysqld_pid_file_path"; return_value=$?
我的是在266行的位置,这句命令会使用mysqld_safe来启动mysql服务,但如果使用root账号使用这个服务需要增加一个启动用户的参数。我们这里正巧使用的是root账号登录,所以对他进行如下修改。
a.使用i键进入输入模式,在$bindir/mysqld_safe 后方,--datadir="$datadir"前方增加 --user=root这个参数如:$bindir/mysqld_safe --user=root --datadir="$datadir"
b.修改好后按ESC键退出编辑模式,输入两个大写的Z字母退出并保存。
c.然后我们再次启动服务。这次我们可以看到启动成功。
./mysql.server start
(3)修改/etc/my.cnf文件中的路径
替换前:
替换后:将mysqld下的basedir、datadir、socket,mysqld_safe下的log-error、pid-file路径都改为mysql的安装路径(替换自己的安装路径即可)
再次启动服务
./mysql.server start
mysql服务启动成功!
6.使用初始化的账号密码进行登录
mysql -u root -p
输入上面初始化的时候,生成的默认密码,密码输入正确后会看到以下信息,输入密码后如果提示ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
需要给/tmp/mysql.sock做个软链接
要进入/tmp目录执行
# 进入tmp目录
cd /tmp
# 给/tmp/mysql.sock做个软链接
ln -s /usr/local/secretCloud/soft/mysql8.0.33/mysql.sock mysql.sock
此时就可以成功启动了
修改mysql的随机密码,将password替换成自己的密码
alter user 'root'@'localhost' identified by 'password';
语法没问题就可以看见 Query OK, 0 rows affected (0.01 sec)。
这时我们使用exit命令退出数据库并重新使用新密码链接。发现已经可以正常使用。
7.允许远程连接
(1)登录mysql
mysql -u root -p
(2)选择MySQL数据库
mysql> use mysql;
(3)特定用户的host 修改
mysql> update user set host='%' where user='root';
(4)修改/etc/my.cnf ,添加
# 允许外部连接 bind-address = 0.0.0.0
此时如果外部访问失败,检查防火墙是否允许3306端口访问
firewall-cmd --zone=public --query-port=3306/tcp
防火墙未添加允许3306访问,添加即可
# 开放3306端口访问
firewall-cmd --zone=public --add-port=3306/tcp --permanent
# 重新载入一下防火墙设置,使设置生效
firewall-cmd --reload
此时测试连接成功!
8.设置开机自启动
(1)将mysql.server 文件复制到 /etc/init.d,并重命名为mysqld
停止mysql服务
mysqladmin -uroot -p -P3306 -h127.0.0.1 shutdown
停止失败提示
(2)运行查看mysql服务状态命令 (报错env: /etc/init.d/mysqld: 权限不够)
service mysqld status
(3)赋予权限
chmod a+wrx /etc/init.d/mysqld
再次执行mysql命令,大功告成!!!
service mysqld start