【转】腾讯云OpenCloudOS部署MySQL
2024-12-09 11:13:16

之前的安装是用docker安装的,本来感觉很方便,但是不知道为什么,换了系统之后安装流程不行了。

这次索性就简单不用docker安装了,直接用最传统的方式安装配置。

毕竟我对docker还是不够的熟练,此时上docker,出问题我还是不太会改。

正文

就和win环境一样,我们在服务器上需要先安装,再配置一个软件。

所以,本篇教程分为两个大部分:安装MySQL,配置MySQL。

亲测可用,系统配置:OpenCloudOS 9,安装流程顺畅,没有什么问题。

安装MySQL

很多人不熟悉Linux,安装的主要麻烦就是安装命令。

所以,这里重新整理

创建目录

切换到根目录创建一个用来存mySql的位置。

1
2
cd /
mkdir -p server/soft/mysql

切换目录

1
cd /server/soft/mysql

查看自带数据库

有的系统会在镜像安装时候就自带数据库,我们先检测一下

1
rpm -qa l grep mari

如果画框中的内容有,则rpm -e –nodeps XXX删除。

比如,我们这里举例。

1
2
3
rpm -e --nodeps mariadb-connector-c-3.1.11-2.oc8.1.x86_64

rpm -e --nodeps mariadb-connector-c-config-3.1.11-2.oc8.1.noarch

下载MySQL

切换到目录之后,我们先下载MySQL的压缩包

1
wget http://dev.mysql.com/get/mysql-5.7.26-1.el7.x86_64.rpm-bundle.tar

解压安装包

1
tar -xvf mysql-5.7.26-1.el7.x86_64.rpm-bundle.tar

安装数据库

这里会问你是否同意,y就行了。

1
2
3
4
5
rpm -ivh mysql-community-common-5.7.26-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.26-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.26-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.26-1.el7.x86_64.rpm
yum install libncurses*

启动并测试连接

1
2
systemctl start mysqld.service
ps -ef |grep mysql

这里只要检测到mySQL的进程,就可以确认是启动成功了。

1
2
mysql     613867       1  0 21:20 ?        00:00:00 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid
root 614796 498031 0 21:22 pts/0 00:00:00 grep --color=auto mysql

配置MySQL

好了,就像是win上边,我们终于装好mySQL了。

接下来就是配置时间了。

查看密码

1
grep "password" /var/log/mysqld.log

这时候,mysql会帮我们生成一个临时密码,如下提示,我们拿到密码。

1
A temporary password is generated for root@localhost: xy?pa,n1o%M-

配置密码

系统生成的密码安全性很强,但是也很难记,所以我们可能需要自己改动出一个好记的密码。

输入如下命令后,需要我们输入自己的密码,记得保存。

1
mysql -u root -p

修改密码

当我们输入明码,进入mySQL的之后,需要逐行的输入密码

1
2
3
set global validate_password_policy=0;
set global validate_password_length=1;
alter user 'root'@'localhost' identified by '你的密码';

修改完成之后,我们刷新提交修改内容。

1
flush privileges;

示例如下,我的密码是123456。

1
2
3
4
5
6
7
8
9
10
11
mysql> set global validate_password_policy=0;
Query OK, 0 rows affected (0.00 sec)

mysql> set global validate_password_length=1;
Query OK, 0 rows affected (0.00 sec)

mysql> alter user 'root'@'localhost' identified by '123456';
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

修改host配置

之前我们的配置默认是指向localhost,这里我们需要把host改到能给外部访问。

%是一个通配符,表示任何主机。

这意味着具有root用户名的用户可以从任何IP地址或主机名连接到MySQL服务器。

通过将其Host列设置为%,这种设置通常用于扩展管理员账户的访问权限,使其不仅限于本地主机。

1
2
3
4
use mysql;
SELECT Host, User FROM user;
UPDATE user SET Host = '%' WHERE User = 'root';
flush privileges;

示例如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> SELECT Host, User FROM user;
+-----------+---------------+
| Host | User |
+-----------+---------------+
| localhost | mysql.session |
| localhost | mysql.sys |
| localhost | root |
+-----------+---------------+
3 rows in set (0.00 sec)

mysql> UPDATE user SET Host = '%' WHERE User = 'root';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

MySQL忘记密码了怎么办?

这段的操作我不推荐使用,原文的意思是,修改my.cnf配置。

skip-grant-tables配置后,启动MySQL服务器时忽略权限表。

这意味着启动时不需要密码就可以访问数据库。这通常只在恢复或紧急情况下使用,因为这样会使数据库变得不安全。

改完配置文件之后,重新设置密码,然后再删除该

修改配置文件

我们可以通过图形界面直接去etc文件夹下修改my.cnf

我们也可以通过命令行去修改,不过需要你稍微了解一下linux命令行编辑的方式。

这里,我们需要在linux的目录下,如果之前还在mySQL路径里边,记得退出来。

1
vi /etc/my.cnf

修改配置如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html

[mysqld]
#
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
#
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
#
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock

# 我们在这里添加我们需要的命令
skip-grant-tables

# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

编辑完成后,:wq退出编辑

保存退出,重启MySQL

1
service mysqld restart

登录数据库

1
mysql

修改密码刷新权限

1
2
3
4
use mysql;
update user set authentication_string=password('新密码') where user='root';
flush privileges;
exit;

删除刚刚新增的命令,这里我们需要再删除配置里边的 skip-grant-tables

重新登录

这里我们用新密码重新登录一下,或者是navicat之类的远程工具连一下看看。

只要保证新密码能连接上,那就没问题。

1
mysql -u root -p

结语

本来打算用docker简单安装一下就算了,但是换了系统之后,之前的流程反而装不上了。

真是麻烦所以干脆自己再走个流程重新装一下。

本来也想选几个8.0版本的MySQL,但是好几个教程都因为各种问题走不下去。

反而是这个低版本的远古教程,居然意外的好用,于是特此记录下,便于后续使用。

参考

在腾讯云服务器OpenCLoudOS系统中安装mysql(有图详解)_opencloudos 安装mysql-CSDN博客

通义千问