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 [2iuser@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/2iuser/mysql/mysql.pid socket=/home/2iuser/mysql/mysql.sock log_error=/home/2iuser/mysql/error.log server-id=100
進入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
啓動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/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
以上就是本次的全部內容,接下來再繼續研究主從的配置,整理好了再分享給大家。