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

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