2024年1月 远程Linux(Ubuntu)服务器上使用普通用户(非root用户)安装mysql8.0.36

avatar
作者
筋斗云
阅读量:0

文章目录


前言

之前liinux上安装过好几次mysql,但是都是用root用户安装的,而且一直没有记录过,每次安装还都得去现查。这次实习期间公司服务器上给的账号不是root用户,并且服务器上已经装了一个mysql,但是因为原mysql版本太老且为了和原来的数据做区分,本次记录一下使用普通用户如何在liinux上安装mysql8.0.36。


一、安装包下载

进入mysql官网https://dev.mysql.com/downloads/mysql/,在本地windows系统上先通过mysql官网下载安装包。根据需求选择需要的mysql版本,以及服务器系统,本文所用linux服务器是ubuntu系统,下载的是如下图的版本。
在这里插入图片描述这里有一个要注意的是下载的glibc的版本,一开始我下载的glibc是2.28,但是所用服务器可能比较老,没支持这个动态库,在后面开始安装mysql数据库时会报如下的错误。

xxx/libstdc++.so.6:version `CXXABI_1.3.11' not found xxx/libstdc++.so.6:version `GLIBCXX_3.4.22' not found xxx/libm.so.6: version `GLIBC_2.27' not found xxx/libm.so.6:version `GLIBC_2.28' not found xxx/libm.so.6:version `GLIBC_2.25 

在网上查了半天想更新一下动态库,但是因为没有root用户的权限想更新动态库还比较困难,最后选择了glibc2.12的版本就正常了,所以建议先看一下服务器上的glibc版本再下载。
然后将本地的安装包上传到服务器上。我是直接用的pycharm连的服务器,然后通过拖拽就把安装包传到服务器上了,也可以使用filezilla等工具。

二、安装过程

1.解压缩安装包

解压代码如下:

tar -xvf mysql-8.0.36-linux-glibc2.12-x86_64.tar.xz 

之前看了几篇博客压缩包后缀名都是.gz,目前因为mysql官网更新了,后缀名现在是.xz,感兴趣的话可以搜一下二者的区别。
解压缩过程中终端会有一堆文件路径输出,结束之后会在当前目录创建一个解压缩出来的文件夹(这个图的glibc还是之前2.28的)。
在这里插入图片描述
原文件名字太长,直接改成mysql简单点。

mv mysql-8.0.36-linux-glibc2.12-x86_64 mysql 

2.新建用户并修改权限(普通用户可以直接跳过,如果是root用户要新建)

如果当前用户是root用户,出于安全考虑,一般要新建一个用户组mysql和用户mysql。
先检查是否有mysql用户组和mysql用户,有可以忽略。

groups mysql  

没有的话新建用户组mysql和用户mysql,然后给mysql用户前文所改名的mysql文件夹的权限。

groupadd mysql && useradd -r -g mysql mysql chown mysql:mysql -R mysql 

3.配置my.cnf文件

如果服务器上之前有配置过mysql,一般会有一个my.cnf文件在etc文件夹下,但是这次为了新装一个mysql,并且让普通账户完全拥有其权限,所以在mysql文件夹下单独新建一个my.cnf文件。

cd mysql vim my.cnf 

之后在文件中添加以下内容,我这里因为服务器上已经有一个mysql了,所以为了避免端口冲突选择的是3307,一般是3306,也可以根据自己需求来,不冲突就好。其中的/home/user/mysql需改成自己的路径(后面的这个路径都要改成自己的)!

[client]    port=3307   socket=/home/user/mysql/mysql.sock   [mysqld] port=3307 basedir=/home/user/mysql datadir=/home/user/mysql/data pid-file=/home/user/mysql/mysql.pid socket=/home/user/mysql/mysql.sock log_error=/home/user/mysql/error.log server-id=100 

4.进入mysql目录,开始安装mysql

bin/mysqld --defaults-file=/home/user/mysql/my.cnf --initialize --user=user --basedir=/home/user/mysql --datadir=/home/user/mysql/data #--defaults-file 指定配置文件 #--initialize 自动生成带随机密码的root用户 

5.启动停止 MySQL

bin/mysqld_safe --defaults-file=/home/user/mysql/my.cnf --user=user & bin/mysqladmin shutdown -u root -p -S /home/user/mysql/mysql.sock 

./mysqld_safe启动mysql会默认寻找/etc/my.cnf配置文件。普通用户没有权限,因此要通过–defaults-file指定我们自定义的配置文件。这里的–user=user就是当前普通用户的用户名,需改成你自己的用户名。

6.在 error.log 文件中获取 root 用户密码。

cat error.log | grep root@localhost 

7.安装完成,使用 root 用户登陆 MySQL。

bin/mysql -u root -p -S /home/user/mysql/mysql.sock 

出现Enter password后复制前文获取的root用户密码回车就好。

8.修改root密码

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123456'; Query OK, 0 rows affected (0.02 sec) 

9.修改权限使远程客户端可以连接。

先查看一下当前用户。

mysql> select host,user from user     -> ; +-----------+------------------+ | host      | user             | +-----------+------------------+ | localhost | mysql.infoschema | | localhost | mysql.session    | | localhost | mysql.sys        | | localhost | root             | +-----------+------------------+ 4 rows in set (0.00 sec) 

之后新创建用户。

mysql> create user 'root'@'%' identified by '123456'; Query OK, 0 rows affected (0.02 sec) 

再赋予权限。

grant all privileges on *.* to 'root'@'%' with grant option; 

然后刷新。

flush privileges; 

最后再看一下。

mysql> select host,user from user     -> ; +-----------+------------------+ | host      | user             | +-----------+------------------+ | %         | root             | | localhost | mysql.infoschema | | localhost | mysql.session    | | localhost | mysql.sys        | | localhost | root             | +-----------+------------------+ 5 rows in set (0.00 sec)  

要注意mysql8.0以后的版本创建用户和赋予权限的语句分开了,现在网上查到的很多是针对5.7版本的语句,所以在8.0版本中会报错,要注意一下。

10.用工具连接数据库

如果没什么问题就可以正常远程连接了。

总结

以上是本次完整的linux服务器部署mysql8.0.36的过程,亲测有效,希望为你能提供帮助!
本文参考:
https://blog.csdn.net/Session_lzh/article/details/103671299
https://blog.csdn.net/weixin_44455388/article/details/119681517

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!