UBUNTU 16.04 MYSQL 5.7多實例安裝

版本:ubuntu 16.04
mysql 5.7
查看MYSQL信息

 dpkg -l|grep mysql

MYSQL 卸載:

sudo apt-get autoremove
sudo apt-get remove mysql-server
sudo apt-get autoremove mysql-server
sudo apt-get remove mysql-common
sudo rm -rf /etc/mysql/  /var/lib/mysql   
dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P  

如果服務器上存在多實例,最好還是要去實例所在的數據目錄下驗證,是否數據文件真的清除徹底。還有殘留的話,需要手動清理
接下來進入安裝步驟:
1.安裝:

sudo apt-get install mysql-server

輸入 ROOT密碼,MYSQL安裝成功
監聽端口號:

  netstat -nlt|grep 33
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN    

可以看到3306端口已開通,這是mysql的默認端口
mysql -uroot -p
輸入之前設置的密碼即可登錄3306端口。查看當前端口號爲3306

mysql> show global variables like 'port';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| port          | 3306  |
+---------------+-------+
1 row in set (0.01 sec)

mysql> exit
Bye

2.多實例安裝
新建配置文件:
–由於mysql 5.7 my.cnf中沒有什麼內容,所以用/etc/mysql/mysql.conf.d/mysqld.cnf的內容

  sudo cp /etc/mysql/mysql.conf.d/mysqld.cnf  /etc/mysql/my_3307.cnf

新建數據文件並授權

 sudo mkdir -p /datayes/mysql_3307
 sudo chown -R mysql:mysql /datayes/mysql_3307
 sudo vim /etc/apparmor.d/usr.sbin.mysqld  
         在 # Allow data files dir access中添加:
         /datayes/mysql_3307/ r,     --數據文件路徑
         /datayes/mysql_3307/** rwk,  

重啓apparmor 服務

 service apparmor restart

–修改my_3307.cnf配置文件

   sudo  vim /etc/mysql/my_3307.cnf
--修改如下內容
[mysqld_safe]
socket          = /datayes/mysql_3307/mysqld_3307.sock       --修改爲3307
#nice           = 0                                          --註釋掉

[mysqld]
user            = mysql
pid-file        = /datayes/mysql_3307/mysqld_3307.pid        --修改爲3307
socket          = /datayes/mysql_3307/mysqld_3307.sock       --修改爲3307
port            = 3307                                       --修改爲3307
basedir         = /usr
datadir         = /datayes/mysql_3307                        --修改爲新建的數據文件
tmpdir          = /tmp
lc-messages-dir = /usr/share/mysql
skip-external-locking
bind-address            = 127.0.0.1
key_buffer_size         = 16M
max_allowed_packet      = 16M
thread_stack            = 192K
thread_cache_size       = 8
myisam-recover-options  = BACKUP
query_cache_limit       = 1M
query_cache_size        = 16M
log_error = /datayes/mysql_3307/error.log                     --修改爲新建的數據文件
expire_logs_days        = 10
max_binlog_size   = 100M

保存後退出。
–初始化數據庫

sudo /usr/sbin/mysqld --defaults-file=/etc/mysql/my_3307.cnf --user=mysql --datadir=/datayes/mysql_3307 --initialize

–啓動MYSQL

sudo /usr/bin/mysqld_safe --defaults-file=/etc/mysql/my_3307.cnf  --datadir=/datayes/mysql_3307

–檢查實例情況

netstat -nlt|grep 330[67]
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:3307          0.0.0.0:*               LISTEN  

此時的新實例ROOT賬號密碼未知,接下來我們需要設置root賬號密碼

–查看當前進程,KILL掉該實例進程

ps -ef|grep mysql
kill pid --執行賬戶爲mysql,詳細信息含有3307
重新啓動該進程,帶上--skip-grant-tables參數,跳過身份驗證
sudo /usr/bin/mysqld_safe --defaults-file=/etc/mysql/my_3307.cnf  --datadir=/datayes/mysql_3307 --skip-grant-tables
 mysql -uroot -p -S /datayes/mysql_3307/mysqld_3307.sock

--直接按回車,進入mysql
mysql> update mysql.user set authentication_string=password('xxxx') where user='root' and Host ='localhost';
Query OK, 1 row affected, 1 warning (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 1

mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)

mysql> exit
Bye

再次登錄mysql,即可使用之前配置的密碼。

停止mysql服務:
mysqladmin -h127.0.0.1  -uroot -p shutdown -S /data/mysql_3307/mysqld_3307.sock
--啓動MYSQL
/usr/bin/mysqld_safe --defaults-file=/etc/mysql/my_3307.cnf  --datadir=/data/mysql_3307
 --啓動mysql 3306實例
service mysql start   --此時3306端口也會默認啓動並隻影響3306端口

報錯:
1.TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).

在初始化mysql中添加參數 --explicit_defaults_for_timestamp

2.Could not create unix socket lock file /var/run/mysqld/mysqld_3307.sock.lock.
請確認是否有/var/run/mysqld的權限,權限不足,可以新建一個文件夾進行上述操作

3.ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

SET PASSWORD = PASSWORD('dba@123');
ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
flush privileges;

本文章參考:https://blog.csdn.net/u010084941/article/details/54865942

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