碰到的问题
今天我需要在云主机上安装一个软件,这个软件只支持 mysql 5.7+ ,但是我的云主机上已经安装了一个 mysql8 了,怎么再装一个mysql 5.7并监听再 3309端口 呢。
参考博客:https://blog.csdn.net/u010898329/article/details/83064373
1,初步安装
https://dev.mysql.com/downloads/mysql/5.7.html#downloads
解压 到/opt 下 并cd
cd /opt/mysql-5.7.32-linux-glibc2.12-x86_64
在当前目录创建 data, var , etc 目录
2, 配置文件
在 /opt/mysql-5.7.32-linux-glibc2.12-x86_64/etc 下创建my.cnf ,指定端口和目录信息,
[mysqld] # skip-grant-tables basedir= /opt/mysql-5.7.32-linux-glibc2.12-x86_64 datadir = /opt/mysql-5.7.32-linux-glibc2.12-x86_64/data port = 3308 socket = /opt/mysql-5.7.32-linux-glibc2.12-x86_64/mysql.sock default-storage-engine=INNODB character_set_server=utf8mb4 innodb_default_row_format=DYNAMIC innodb_large_prefix=ON innodb_file_format=Barracuda innodb_log_file_size=2G transaction-isolation=READ-COMMITTED binlog_format=row max_allowed_packet = 256M [client] socket = /opt/mysql-5.7.32-linux-glibc2.12-x86_64/mysql.sock #不区分大小写 lower_case_table_names = 1
4,初始化
初始化mysql ,记录下当前产生的密码
./bin/mysqld –defaults-file=/opt/mysql-5.7.32-linux-glibc2.12-x86_64/etc/my.cnf –initialize –user=mysql &
启动,只运行 mysqld_safe 即可启动mysql
/opt/mysql-5.7.32-linux-glibc2.12-x86_64/bin/mysqld_safe –defaults-file=/opt/mysql-5.7.32-linux-glibc2.12-x86_64/etc/my.cnf –user=mysql &
5,发生权限错误的处理
今天晚上,突然用 root登录mysql,能登录成功,但是创建数据库 会显示无权限,在网上找了很多资料查找均失败,比如 以–skip-grant-tables重启,发现root 没有更改权限的权限
/opt/mysql-5.7.32-linux-glibc2.12-x86_64/bin/mysqld_safe –defaults-file=/opt/mysql-5.7.32-linux-glibc2.12-x86_64/etc/my.cnf –user=mysql –skip-grant-tables &
不得不吐槽一下,mysql的用户权限管理这一块真是s一样的逻辑。
最终参考: https://stackoverflow.com/questions/1712806/how-to-get-all-privileges-back-to-the-root-user-in-mysql 中 cyb0k 的答案,删除全部root用户,重新插入新的拥有所有权限的root用户。
先删除msyql.user表的所有root用户,
insert into `user` VALUES(‘localhost’,’root’,’Y’,’Y’,’Y’,’Y’,’Y’,’Y’,’Y’,’Y’,’Y’,’Y’,’Y’,’Y’,’Y’,’Y’,’Y’,’Y’,’Y’,’Y’,’Y’,’Y’,’Y’,’Y’,’Y’,’Y’,’Y’,’Y’,’Y’,’Y’,’Y’,”,”,”,”,0,0,0,0,’mysql_native_password’,’*fsdaffdsfdasfdasfadsfasdf’,’N’,’2020-12-27 17:43:16′,NULL,’N’);
插入后
./bin/mysql –socket=/opt/mysql-5.7.32-linux-glibc2.12-x86_64/mysql.sock –port=3308 -uroot -p 即可登录成功。