首先说明:老版本数据库没有数据,因此无数据备份过程。若是你在升级数据库过程里,须要备份数据,请另外自行处理。php
一、下载最新版MySQL、解压待用html
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.18-linux-glibc2.5-x86_64.tar.gz #下载
tar -zxvf mysql-5.7.18-linux-glibc2.5-x86_64.tar.gz #解压
cp -r mysql-5.7.18-linux-glibc2.5-x86_64 /usr/local/mysql #复制到安装目录
二、添加用户mysql
#添加用户组
groupadd mysql
#添加用户mysql 到用户组mysql
useradd -g mysql mysql
三、建立数据文件存放目录(没有放在MySQL默认的目录)linux
mkdir /datas mkdir /datas/mysql chown -R mysql.mysql /datas/mysql chmod 777 /datas/mysql
四、卸载老版本(这里可能会遇到各类问题)sql
rpm -qa|grep -i mysql #查找已有的包,当时我有2个(php-mysql-5.4.16-42.el7.x86_6四、perl-DBD-MySQL-4.023-5.el7.x86_64)
rpm -ev php-mysql-5.4.16-42.el7.x86_64 #删除其中一个,正常,而后另一个删不掉,有依赖安装包
yum -y remove perl-DBD-MySQL #这样才终于卸载掉
具体这个步骤,参考这里,感谢原做者:数据库
http://www.cnblogs.com/kerrycode/p/4364465.html服务器
http://blog.csdn.net/tjcyjd/article/details/52189182socket
http://www.jb51.net/os/RedHat/80289.htmlide
五、安装新的MySQL,当前用户在 /var/local/mysql/ 目录下:测试
./bin/mysqld --initialize --user=mysql --datadir=/datas/mysql #安装
./support-files/mysql.server start #启动服务
这里有可能没法启动,问题:mysqld_safe error不能建立错误日志文件
cd /var/log/mariadb/
vi mariadb.log #新建一个文件
chown mysql.mysql mariadb.log
chmod 777 mariadb.log
再启动就ok了
参考,感谢原做者:http://tieba.baidu.com/p/5103002724
ps aux | grep mysql #查看一下进程
/usr/local/mysql/bin/mysql -V #查看版本,是否是正确的,或者登录后用命名查看: SELECT VERSION();
六、安装正常后,就是初始配置了。包括:修改root密码、修改端口、容许用户远程登录
不过安装过程,要注意,有个初始密码【(YngqRv7m).e】(每次每一个人都不一样,先记着,一下子登录的时候用):
2017-06-29T02:20:02.092807Z 1 [Note] A temporary password is generated for root@localhost: (YngqRv7m).e
端口:
vi /etc/my.cnf #编辑配置文件
修改以下:
[mysqld]
datadir=/datas/mysql
port=33316
[client]
port=33316
修改root用户:
登录mysql:
/usr/local/mysql/bin/mysql -uroot -p
若是报错 Can’t connect to local MySQL server through socket
应该是“/etc/my.cnf”配置文件的问题了。解决办法是修改“/etc/my.cnf”配置文件,在配置文件中添加“[client]”选项和“[mysql]”选项,并使用这两个选项下的“socket”参数值,与“[mysqld]”选项下的“socket”参数值,指向的socket文件路径彻底一致。以下,继续修改my.cnf。参考,感谢做者: http://www.aiezu.com/db/mysql_cant_connect_through_socket.html
[mysqld] datadir=/datas/mysql socket=/var/lib/mysql/mysql.sock port=33316 [client] default-character-set=utf8 socket=/var/lib/mysql/mysql.sock port=33316 [mysqld_safe] log-error=/var/log/mariadb/mariadb.log pid-file=/var/run/mariadb/mariadb.pid
而后登录进去,修改root
/usr/local/mysql/bin/mysql -uroot -p #而后输入上面记下的密码 (YngqRv7m).e
操做可能会报错:
mac mysql error You must reset your password using ALTER USER statement before executing this statement.
安装完mysql 以后,登录之后,无论运行任何命令,老是提示这个。那么:
SET PASSWORD = PASSWORD('your new password');
ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
flush privileges;
完成以上三步退出再登,使用新设置的密码就好了。参考,感谢做者:http://www.cnblogs.com/debmzhang/p/5013540.html
而后是设置容许远程登陆:
须要手动增长能够远程访问数据库的用户。
方法1、本地登入mysql,更改 "mysql" 数据库里的 "user" 表里的 "host" 项,将"localhost"改成"%"
mysql>use mysql; mysql>update user set host = '%' where user = 'root'; mysql>select host, user from user;
方法2、直接受权(推荐)
从任何主机上使用root用户,密码:youpassword(你的root密码)链接到mysql服务器:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'youpassword' WITH GRANT OPTION; FLUSH PRIVILEGES
我用方法一不行,继续方法二才好。没测试是否是方法执行了还须要重启mysql,按道理应该不用。
参考,感谢做者:http://www.cnblogs.com/hyzhou/archive/2011/12/06/2278236.html
另外,添加用户,或者修改其余用户的密码,直接参考:http://blog.csdn.net/adu198888/article/details/54092857
#给用户test赋予全部库和表的部分权限(因此权限是: all privileges) grant select,delete,update,create,drop on *.* to test@"%" identified by "1234";
#修改用户密码 update mysql.user set authentication_string=password('密码') where User='test' and Host='localhost'; flush privileges;
另外附:
有时候mysql报错:Got a packet bigger than 'max_allowed_packet' bytes
而后命令查看和配置文件里查看的max_allowed_packet结果不同(命令查询是1024):
show VARIABLES like '%max_allowed_packet%'; #结果为1024
那就考虑是由于服务器的内存过小,被MySQL重置为1024了。
解决办法是:一、重启MySQL,就行了;二、根本解决办法是服务器加内存。