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