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

以上就是本次的全部內容,接下來再繼續研究主從的配置,整理好了再分享給大家。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章