文章目录
前言
之前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