版本: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