Skip to content

MySQL部署 ​

正文 ​

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

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

亲测可用,云服务器系统配置:OpenCloudOS 9,2核2G,20mbps的上传带宽。

安装流程顺畅,亲测流程没有什么问题。

安装MySQL ​

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

所以,这里会将每个步骤的命令尽可能的展示,便于大家线上照着流程跑。

创建目录 ​

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

cd /
mkdir -p server/soft/mysql

切换目录 ​

cd /server/soft/mysql

查看自带数据库 ​

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

rpm -qa l grep mari

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

比如,我们这里举例。

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的压缩包

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

解压安装包 ​

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

安装数据库 ​

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

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*

启动并测试连接 ​

systemctl start mysqld.service
ps -ef |grep mysql

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

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了。

接下来就是配置时间了。

查看密码 ​

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

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

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

配置密码 ​

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

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

mysql -u root -p

修改密码 ​

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

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

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

flush privileges;

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

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列设置为%,这种设置通常用于扩展管理员账户的访问权限,使其不仅限于本地主机。

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

示例如下

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路径里边,记得退出来。

vi /etc/my.cnf

修改配置如下

# 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

service mysqld restart

登录数据库 ​

mysql

修改密码刷新权限 ​

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

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

重新登录 ​

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

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

mysql -u root -p

结语 ​

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

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

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

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

参考 ​

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

通义千问

【原文】【转】腾讯云OpenCloudOS部署MySQL | 远川的个人博客 (crazystudent13.cn)