当你的服务器已经存在一个mysql服务,并且与你想要安装的MySQL服务是冲突的,该怎么办呢?我今天刚好也遇到了,目前系统的数据库服务MySQL8,而业务系统需要一台mysql5.7的。下面是我的笔记。
1.首先是在mysql官网找到mysql对应的版本,像图片一样选择,linux通用版的mysql服务
2.下载完成后,利用winscp或者xftp上传到linux系统
3.到linux服务器解压需mysql tar包 到指定的文件夹,如果不加-C参数 那就是默认当前文件夹
4.复制一份已经存在my.conf文件,到新数据库的文件夹下,这个新的my.conf就是新数据库的启动文件,如果不存在那可以自己创建一个my.conf文件
这几项配置是启动所必须的,其他的可以按照自己的需求配置
port=3307
datadir=/home/dztst/dz-xny-ftt/mysql/mysql-5.7.33/data
socket=/home/dztst/dz-xny-ftt/mysql/mysql-5.7.33/mysql.sock
log-error=/home/dztst/dz-xny-ftt/mysql/mysql-5.7.33/log/mysqld.log
pid-file=/home/dztst/dz-xny-ftt/mysql/mysql-5.7.33/mysqld.pid
5.初始化目录
注意:data,log,socket,pidfile这些文件都要创建,避免初始化失败,穿件的路径就是my.conf指定的路径
5.1切换到src目录下后,到bin中执行初始化语句
bin/mysqld
--defaults-file=/home/dztst/dz-xny-ftt/mysql/mysql-5.7.33/my.cnf
--initialize --user=mysql
--basedir=/home/dztst/dz-xny-ftt/mysql/mysql-5.7.33
--datadir=/home/dztst/dz-xny-ftt/mysql/mysql-5.7.33/data
--explicit_defaults_for_timestamp=true
首先–defaults-file这个参数必须放在第一个否则会无法识别这个参数,否则启动的时候会报错.
–initialize 这个参数会给root生成一个默认密码,如果用–initialize-insecure这个参数则不会生成root密码,如果你没有在初始化的时候生成密码 mysql重置root密码
–user=mysql 这个参数是指定所属用户
–explicit_defaults_for_timestamp 这个参数与字段类型有关5.6以后就有了 设置成1就行了要不然会有个警告。配置文件中加入explicit_defaults_for_timestamp=true效果一样
其他参数一看就明白的,不用说了。
6.初始化成功后,需要查看初始化的默认密码
cat 自定义的log文件 |(管道符) grep(分组) password 分组的依据
cat /home/dztst/dz-xny-ftt/mysql/mysql-5.7.33/log/mysqld.log | grep password
7.启动新的数据库服务
./bin/mysqld_safe
--defaults-file=/home/dztst/dz-xny-ftt/mysql/mysql-5.7.33/my.cnf
--basedir=/home/dztst/dz-xny-ftt/mysql/mysql-5.7.33
--datadir=/home/dztst/dz-xny-ftt/mysql/mysql-5.7.33/data &
这里呢,就是执行mysqld_safe这个文件并且指定一些基本参数,datadir和basedir其实是可以不用指定的,我们只需要指定的是my.cnf 的路径,不然就是默认的my.conf文件启动,那样是不会成功的。最重要的是一定要指定自己的my.conf
8.查询服务是否启动成功并且登陆自己的mysql
可以看到,自己的mysql和别人的mysql服务都已正常启动,接下来就是修改密码,并且设置远程登陆
9.连接数据库
启动mysql文件并且指定ip,端口,密码
/home/dztst/dz-xny-ftt/mysql/mysql-5.7.33/bin/mysql -h127.0.0.1 -uroot -P3300 -p
登陆后需要马上修改密码,不然执行任何操作都会提示
mysql> use mysql;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
10.修改密码
alter user ‘root’@‘localhost’ identified by ‘新密码’;
如果先执行修改简单密码报错,mysql5.7不会报错,那就会提示这个错误,报错的意思就是你的密码不符合要求
这个其实与validate_password_policy的值有关。
validate_password_policy有以下取值:
默认是1,即MEDIUM,所以刚开始设置的密码必须符合长度,且必须含有数字,小写或大写字母,特殊字符。
有时候,只是为了自己测试,不想密码设置得那么复杂,譬如说,我只想设置root的密码为123456。
修改两个全局参数:
首先,修改validate_password_policy参数的值
mysql> set global validate_password_policy=0;
Query OK, 0 rows affected (0.00 sec)
validate_password_length(密码长度)参数默认为8,我们修改为1
mysql> set global validate_password_length=1;
Query OK, 0 rows affected (0.00 sec)
11.设置远程连接
mysql>use mysql;
msyql>update user set user.Host=’%’ where user.User=‘root’;
mysql>flush privileges;