Linux普通用户安装单机mysql 5.7
前言
通常很多网上的安装mysql的教程都是以root用户来安装的,但是我们知道root用户的权限非常之高,在真实的项目环境中,往往要求不能使用root用户来安装和运行软件,防止因为漏洞导致系统被攻击,所以一般会使用有限权限的普通用户来安装软件。我们今天就是要用普通用户来安装一次mysql,下次讲如何部署mysql主从/主主模式
一、准备东西
- mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz:下载链接
- centos7
二、安装过程
2.1 卸载原带mysql(MariaDB)
# 查找mariadb相关的软件包
[root@localhost /]# rpm -qa |grep maria
# 根据展示出来的包名使用以下命令卸载,如
[root@localhost /]# rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64
# 结果有几个就删除几个,以上只是其中一个
# --nodeps参数一定要带上,否则可能会因为依赖关系,而无法卸载,加上该参数就不会检查依赖,而直接卸载
2.2 创建并切换普通用户
# 创建用户
[root@localhost /]# useradd mysql
# 为mysql用户设置密码
[root@localhost /]# passwd mysql
更改用户 mysql 的密码 。
新的 密码:
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
# 根据提示输入两次密码即完成用户创建
# 为mysql用户创建有权限的目录,如data
[root@localhost /]# mkdir data
# 此时data目录的权限还是root用户
[root@localhost /]# ll
总用量 20
lrwxrwxrwx. 1 root root 7 3月 27 04:42 bin -> usr/bin
dr-xr-xr-x. 5 root root 4096 3月 27 04:53 boot
drwxr-xr-x. 2 root root 6 7月 16 23:20 data
drwxr-xr-x. 20 root root 3240 7月 16 22:53 dev
drwxr-xr-x. 104 root root 8192 7月 16 23:18 etc
# 我们需要将权限授予mysql用户
[root@localhost /]# chown -R mysql:mysql /data
[root@localhost /]# ll
总用量 20
lrwxrwxrwx. 1 root root 7 3月 27 04:42 bin -> usr/bin
dr-xr-xr-x. 5 root root 4096 3月 27 04:53 boot
drwxr-xr-x. 2 mysql mysql 6 7月 16 23:20 data
drwxr-xr-x. 20 root root 3240 7月 16 22:53 dev
drwxr-xr-x. 104 root root 8192 7月 16 23:18 etc
# 切换至mysql用户
[root@localhost /]# su - mysql
[mysql@localhost /]$ cd /data
如果对上述权限操作不清楚的,可以先回顾一下原来的博客《Linux学习之文件权限》。
2.3 解压并安装
# 注意上传文件的时候以mysql用户的身份上传文件(以mysql用户连xshell或xftp)
# 否则上传上来的文件权限可能还是root的
# 解压文件
[mysql@localhost data]$ tar -zxvf mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz
# 重命名文件夹,便于后面配置一些参数路径
[mysql@localhost data]$ mv mysql-5.7.26-linux-glibc2.12-x86_64 mysql
[mysql@localhost data]$ ll
总用量 0
drwxr-xr-x. 9 mysql mysql 129 7月 16 23:33 mysql
# 切换至mysql目录
[mysql@localhost data]$ cd mysql
# 安装mysql
[mysql@localhost mysql]$ bin/mysql_install_db --user=mysql --basedir=/data/mysql/ --datadir=/data/mysql/data/
2020-07-16 23:42:02 [WARNING] mysql_install_db is deprecated. Please consider switching to mysqld --initialize
2020-07-16 23:42:08 [WARNING] The bootstrap log isn't empty:
2020-07-16 23:42:08 [WARNING] 2020-07-16T15:42:02.889711Z 0 [Warning] --bootstrap is deprecated. Please consider using --initialize instead
2020-07-16T15:42:02.890977Z 0 [Warning] Changed limits: max_open_files: 1024 (requested 5000)
2020-07-16T15:42:02.890995Z 0 [Warning] Changed limits: table_open_cache: 431 (requested 2000)
# 添加可执行命令
[mysql@localhost mysql]$ cp ./support-files/mysql.server /etc/init.d/mysqld
cp: 无法创建普通文件"/etc/init.d/mysqld": 权限不够
# 有的可能会出现上述的这个权限不足的问题,那么这个时候可能需要借助root用户来复制,并给予权限了
# 那么如果复制成功了,则以下操作可以忽略
[mysql@localhost mysql]$ su - root
[root@localhost ~]# cd /data/mysql
[root@localhost mysql]# cp ./support-files/mysql.server /etc/init.d/mysqld
[root@localhost mysql]# cd /etc/init.d/
[root@localhost init.d]# ll
总用量 52
-rw-r--r--. 1 root root 17500 5月 3 2017 functions
-rwxr-xr-x. 1 root root 10576 7月 16 23:49 mysqld
-rwxr-xr-x. 1 root root 4334 5月 3 2017 netconsole
-rwxr-xr-x. 1 root root 7293 5月 3 2017 network
-rw-r--r--. 1 root root 1160 8月 5 2017 README
# 将权限给mysql用户
[root@localhost init.d]# chown -R mysql:mysql mysqld
[root@localhost init.d]# ll
总用量 52
-rw-r--r--. 1 root root 17500 5月 3 2017 functions
-rwxr-xr-x. 1 mysql mysql 10576 7月 16 23:49 mysqld
-rwxr-xr-x. 1 root root 4334 5月 3 2017 netconsole
-rwxr-xr-x. 1 root root 7293 5月 3 2017 network
-rw-r--r--. 1 root root 1160 8月 5 2017 README
# 退出root,继续使用mysql用户
[root@localhost init.d]# exit
# 将默认的配置文件复制到/etc下
[mysql@localhost mysql]$ cp ./support-files/my-default.cnf /etc/my.cnf
cp: 无法获取"./support-files/my-default.cnf" 的文件状态(stat): 没有那个文件或目录
# 我们的安装包中没有默认的配置文件,mysql官方从5.7.18开始不再提供该文件
# 我们可以直接使用mysql的默认配置,一般centos会自带有/etc/my.cnf,修改相应的路径即可
[mysql@localhost mysql]$ vim /etc/my.cnf
# 如果无法编辑保存,说明权限不够,默认的该文件的权限为root
# 按照之前交的办法使用root用户更改文件权限即可
[mysql@localhost etc]$ su - root
[root@localhost ~]# chown -R mysql:mysql /etc/my.cnf
[root@localhost ~]# ll /etc/my.cnf
-rw-r--r--. 1 mysql mysql 570 6月 8 2017 /etc/my.cnf
[root@localhost ~]# exit
登出
# 清空原有配置
[mysql@localhost mysql]$ cat /dev/null > /etc/my.cnf
[mysql@localhost mysql]$ vim /etc/my.cnf
# 可按照以下内容修改
[mysqld]
basedir = /data/mysql
datadir = /data/mysql/data
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
2.4 启动并修改mysql密码
# 安全模式启动mysql
[mysql@localhost mysql]$ bin/mysqld_safe --user=mysql &
[1] 2668
[mysql@localhost mysql]$ 2020-07-16T16:18:28.650950Z mysqld_safe Logging to '/data/mysql/data/localhost.localdomain.err'.
2020-07-16T16:18:28.917887Z mysqld_safe Starting mysqld daemon with databases from /data/mysql/data
# 重启mysql
[mysql@localhost mysql]$ /etc/init.d/mysqld restart
Shutting down MySQL..2020-07-16T16:20:34.760914Z mysqld_safe mysqld from pid file /data/mysql/data/localhost.localdomain.pid ended
SUCCESS!
Starting MySQL. SUCCESS!
[1]+ 完成 bin/mysqld_safe --user=mysql
# 修改mysql密码
# 查看初始密码,在用户的家目录下的.mysql_secret文件中
# root用户就在/root下,其他用户就在/home/用户名下
[mysql@localhost mysql]$ cat /home/mysql/.mysql_secret
# Password set for user 'root@localhost' at 2020-07-16 23:42:02
YYVJdz%m-E<P
# 以初始密码登录mysql
[mysql@localhost mysql]$ bin/mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.7.26
Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
# 修改密码
mysql> SET PASSWORD = PASSWORD('root');
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
# 开启远程访问权限
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> update user set host = '%' where user = 'root';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> select host, user from user;
+-----------+---------------+
| host | user |
+-----------+---------------+
| % | root |
| localhost | mysql.session |
| localhost | mysql.sys |
+-----------+---------------+
3 rows in set (0.00 sec)
mysql> quit
Bye
# 重启mysql
[mysql@localhost mysql]$ /etc/init.d/mysqld restart
Shutting down MySQL.. SUCCESS!
Starting MySQL.. SUCCESS!
[mysql@localhost mysql]$ ps -ef |grep mysql
2.5 配置环境变量(可选)
至上述步骤,mysql已经安装部署完毕,如果怕以后找不到安装路径,可配置环境变量,这样以后可以在任意目录使用mysql -uroot -p来进行登录了
# 将用户切回root,只有root用户有权限配置
[mysql@localhost mysql]$ su - root
[root@localhost ~]# vim /etc/profile
# 在其中加入mysql的bin目录路径
# export PATH=$PATH:/data/mysql/bin
# 使环境变量生效
[root@localhost ~]# source /etc/profile
这样就可以到处使用mysql命令了