Linux普通用户安装mysql-5.7.21

Linux普通用户安装mysql-5.7.21

工作中一直在用mysql,但是研究不够深入,由于现有MySQL数据库所在主机资源比较紧张,如果出现单点故障,对业务影响将会比较大。所以,一方面需要迁移到新的主机上,另一方面,希望通过mysql主从复制的方式,实现高可用的解决方案。
经过资源申请,平台架构部提供了两台主机,经过资源评估后,发现有两个问题:一个是两台主机已经安装了mysql数据库,另一个问题是没有root用户,只有普通用户。大家都知道使用root用户安装mysql十分方便,但是没有root用户,安装过程中用到的配置文件以及文件权限比较麻烦,如果再次安装怎么不影响现有的mysql数据库,这将是一个挑战。
那么,我们的目标就是在linux系统中,使用普通用户(非root用户)安装独立的mysql数据库。经过一天的研究,通过查找资料以及查看mysql的官方文档,终于安装成功了,现总结如下:

安装步骤

  1. 下载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
    [2iuser@iZuf637wclk4jkwphn8rjyZ ~]$ cd mysql
  2. 编辑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/2iuser/mysql/mysql.pid
    socket=/home/2iuser/mysql/mysql.sock
    log_error=/home/2iuser/mysql/error.log
    server-id=100
  3. 进入mysql目录,开始安装mysql。

    [2iuser@iZuf637wclk4jkwphn8rjyZ mysql]$ bin/mysqld \
    --defaults-file=/home/2iuser/mysql/my.cnf \  #指定配置文件
    --initialize \  #自动生成带随机密码的root用户
    --user=2iuser \  
    --basedir=/home/2iuser/mysql \
    --datadir=/home/2iuser/mysql/data 
  4. 启动mysql

    [2iuser@iZuf637wclk4jkwphn8rjyZ mysql]$ bin/mysqld_safe \
    --defaults-file=/home/2iuser/mysql/my.cnf \
    --user=2iuser &
    [1] 21651
    [2iuser@iZuf637wclk4jkwphn8rjyZ mysql]$
  5. 在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-
  6. 安装完成,使用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/2iuser/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配置文件
[2iuser@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', however file don't exists. Create writable for user '2iuser'.
bin/mysqld_safe: line 144: /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: 
ERROR 2002 (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/2iuser/mysql/mysql.sock
#由于mysql是在路径/tmp/mysql.sock寻找sock文件,我们配置文件里指定的路径是/home/2iuser/mysql/mysql.sock,所以加上软连接即可。
ln -s /home/2iuser/mysql/mysql.scok /tmp/mysql.sock

以上就是本次的全部内容,接下来再继续研究主从的配置,整理好了再分享给大家。

你可能感兴趣的:(MySQL)