Linux普通用户安装mysql-5.7.21


工作中一直在用mysql,但是研究不够深入,由于现有MySQL数据库所在主机资源比较紧张,如果出现单点故障,对业务影响将会比较大。所以,一方面需要迁移到新的主机上,另一方面,希望通过mysql主从复制的方式,实现高可用的解决方案。

经过资源申请,平台架构部提供了两台主机,经过资源评估后,发现有两个问题:一个是两台主机已经安装了mysql数据库,另一个问题是没有root用户,只有普通用户。大家都知道使用root用户安装mysql十分方便,但是没有root用户,安装过程中用到的配置文件以及文件权限比较麻烦,如果再次安装怎么不影响现有的mysql数据库,这将是一个挑战。

那么,我们的目标就是在linux系统中,使用普通用户(非root用户)安装独立的mysql数据库。经过一天的研究,通过查找资料以及查看mysql的官方文档,终于安装成功了,现总结如下:

安装步骤

*
下载mysql安装包,放到当前普通用户目录下解压。
[2iuser@iZuf637wclk4jkwphn8rjyZ ~]$ wget https://dev.mysql.com/get/Downloads/
MySQL-5.7/mysql-5.7.21-linux-glibc2.12-x86_64.tar.gz [2iuser
@iZuf637wclk4jkwphn8rjyZ ~]$ tar -zxvf mysql-5.7.21-linux-glibc2.12
-x86_64.tar.gz [2iuser@iZuf637wclk4jkwphn8rjyZ ~]$ mkdir mysql [2iuser
@iZuf637wclk4jkwphn8rjyZ ~]$ ln -s mysql-5.7.21-linux-glibc2.12-x86_64 mysql [2
iuser@iZuf637wclk4jkwphn8rjyZ ~]$ cd mysql
*
编辑my.cnf配置文件,放在当前mysql安装目录下,配置文件路径/home/2iuser/mysql/my.cnf 。
[client] port=3336 socket=/home/2iuser/mysql/mysql.sock [mysqld] port=3336
basedir=/home/2iuser/mysql datadir=/home/2iuser/mysql/data pid-file=/home/2
iuser/mysql/mysql.pid socket=/home/2iuser/mysql/mysql.sock log_error=/home/2
iuser/mysql/error.log server-id=100
*
进入mysql目录,开始安装mysql。
[2iuser@iZuf637wclk4jkwphn8rjyZ mysql]$ bin/mysqld \ --defaults-file=/home/2
iuser/mysql/my.cnf \#指定配置文件 --initialize \ #自动生成带随机密码的root用户 --user=2iuser \ -
-basedir=/home/2iuser/mysql \ --datadir=/home/2iuser/mysql/data
*
启动mysql
[2iuser@iZuf637wclk4jkwphn8rjyZ mysql]$ bin/mysqld_safe \ --defaults-file=
/home/2iuser/mysql/my.cnf \ --user=2iuser & [1] 21651
[2iuser@iZuf637wclk4jkwphn8rjyZ mysql]$
*
在error.log文件中获取root用户密码
[2iuser@iZuf637wclk4jkwphn8rjyZ mysql]$ cat error.log | grep root@localhost
2018-04-06T16:58:03.281117Z 1 [Note] A temporary password is generated for root
@localhost: rusp/wq+!0H-
*
安装完成,使用root用户登陆mysql。
[2iuser@iZuf637wclk4jkwphn8rjyZ mysql]$ bin/mysql -u root -p Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection
id is 8 Server version: 5.7.21 MySQL Community Server (GPL) Copyright (c) 2000,
2018, 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> mysql> SET PASSWORD FOR'root'@
'localhost' = PASSWORD('123456');#修改密码 mysql> flush privileges; mysql> show
databases; +--------------------+ | Database | +--------------------+ |
information_schema | | mysql | | performance_schema | | sys |
+--------------------+ 4 rows in set (0.00 sec) mysql>
6.关闭mysql
[2iuser@iZuf637wclk4jkwphn8rjyZ mysql]$ ps -ef | grep mysql 2iuser 23636 23519
0 16:39 ? 00:00:00 /bin/sh bin/mysqld_safe --user=2iuser 2iuser 23813 23636 0 16
:39 ? 00:00:02 /home/2iuser/mysql/bin/mysqld --basedir=/home/2iuser/mysql
--datadir=/home/2iuser/mysql/data --plugin-dir=/home/2iuser/mysql/lib/plugin
--log-error=/home/2iuser/mysql/error.log --pid-file=/home/2
iuser/mysql/mysql.pid --socket=/home/2iuser/mysql/mysql.sock --port=3336 2iuser
24006 23990 0 18:23 pts/0 00:00:00 grep --color=auto mysql #关闭mysql命令 [2iuser
@iZuf637wclk4jkwphn8rjyZ mysql]$ bin/mysqladmin shutdown -u root -p Enter
password: [2iuser@iZuf637wclk4jkwphn8rjyZ mysql]$ ps -ef | grep mysql 2iuser
24017 23990 0 18:24 pts/0 00:00:00 grep --color=auto mysql
问题总结

* 安装mysql报错 #报错内容 bin/mysqld: error while loading shared libraries: libaio.so.
1: cannot open shared object file: No such file or directory
#由于缺少依赖包,通过yum安装libaio包 [2iuser@iZuf637wclk4jkwphn8rjyZ mysql]$ yum search
libaio [2iuser@iZuf637wclk4jkwphn8rjyZ mysql]$ yum install libaio
* 启动mysql报错 #通过这种方式启动,mysql会默认寻找/etc/my.cnf配置文件 [2
iuser@iZuf637wclk4jkwphn8rjyZ mysql]$ bin/mysqld_safe \--user=2iuser &
#启动mysql报错内容 [2iuser@iZuf637wclk4jkwphn8rjyZ mysql]$ bin/mysqld_safe: line 647:
/var/log/mariadb/mariadb.log: No such file or directory 2018-04-06T16:59:
36.091735Z mysqld_safe error: log-error set to '/var/log/mariadb/mariadb.log',
howeverfile don't exists. Create writable for user '2iuser'. bin/mysqld_safe:
line144: /var/log/mariadb/mariadb.log: No such file or directory
#当前系统中安装了mariadb,mariadb的配置文件路径/etc/my.cnf,mysql根据配置文件无法找到相关的文件,所以报错。
#查找mariadb,删除mariadb。 [2iuser@iZuf637wclk4jkwphn8rjyZ mysql]$ rpm -qa | grep
mariadb [2iuser@iZuf637wclk4jkwphn8rjyZ mysql]$ rpm -e mariadb-libs-5.5.56-2.
el7.x86_64#在启动命令中加上--defaults-file参数指定配置文件 [2iuser@iZuf637wclk4jkwphn8rjyZ
mysql]$ bin/mysqld_safe \--defaults-file=/home/2iuser/mysql/my.cnf \
--user=2iuser &
* 登陆mysql报错 #登陆报错内容 [2iuser@iZuf637wclk4jkwphn8rjyZ mysql]$ bin/mysql -u root
-p Enter password: ERROR2002 (HY000): Can't connect to local MySQL server
through socket '/tmp/mysql.sock' (2)
#其中一种解决方法是在命令行里指定sock文件即可登陆,由于本机已安装mysql数据库,sock文件在/tmp/mysql.sock已存在,所以建议这种方式登录,后续再想办法优化。
[2iuser@iZuf637wclk4jkwphn8rjyZ mysql] bin/mysql -u root -p -S /home/2
iuser/mysql/mysql.sock
#由于mysql是在路径/tmp/mysql.sock寻找sock文件,我们配置文件里指定的路径是/home/2iuser/mysql/mysql.sock,所以加上软连接即可。
ln -s /home/2iuser/mysql/mysql.scok /tmp/mysql.sock
以上就是本次的全部内容,接下来再继续研究主从的配置,整理好了再分享给大家。