在阿里云轻量运用服务器上安装MySQL5.7
**
在阿里云轻量运用服务器上安装MySQL5.7
**
说明
我使用的是阿里云的轻量应用服务器安装MySQL5.7,过程中踩了不少坑。所以在这里总结一下安装过程。我选用的应用镜像是node.js(之间用lamp没安装成功),系统镜像是CentOS7.3.
删除MariaDB
阿里云服务器Cent OS 7 的 yum 源中已经不再包含在 MySQL,而改用了 MariaDB。
MariaDB 是 mysql 被 Oracle 收购以后,新开的一个 mysql 的分支,完全兼容 mysql。
虽然两者没什么差别,但主要是出于习惯,用起来顺手所以把 MariaDB 换成mysql 。
闲话不多说,开始吧!
- 查询 MariaDB 是否已经安装了
#rpm -qa | grep maria* - 删除 MariaDB
#yum -y remove maria*
【注意】 如果第一步命令执行以后,什么都没有,那么第二就直接跳过吧,因为你的系统中并没有装 MariaDB 。
安装mysql5.7
-
下载tar包,这里使用wget从官网下载
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz -
将mysql安装到/usr/local/mysql下
#解压
tar -xvf mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz
#移动
mv mysql-5.7.22-linux-glibc2.12-x86_64 /usr/local/
#重命名
mv /usr/local/mysql-5.7.22-linux-glibc2.12-x86_64 /usr/local/mysql -
新建data目录
mkdir /usr/local/mysql/data -
新建mysql用户、mysql用户组
mkdir /usr/local/mysql/data
#添加mysql用户组
groupadd mysql
#添加mysql用户
useradd mysql -g mysql
- 将/usr/local/mysql的所有者及所属组改为mysql
chown -R mysql.mysql /usr/local/mysql
- 配置
/usr/local/mysql/bin/mysql_install_db --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data
#如果出现以下错误:
2018-07-14 06:40:32 [WARNING] mysql_install_db is deprecated. Please consider switching to mysqld --initialize
2018-07-14 06:40:32 [ERROR] Child process: /usr/local/mysql/bin/mysqldterminated prematurely with errno= 32
2018-07-14 06:40:32 [ERROR] Failed to execute /usr/local/mysql/bin/mysqld --bootstrap --datadir=/usr/local/mysql/data --lc-messages-dir=/usr/local/mysql/share --lc-messages=en_US --basedir=/usr/local/mysql
-- server log begin --
-- server log end --
#则使用以下命令:
/usr/local/mysql/bin/mysqld --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data --initialize
#如果出现以下错误:
/usr/local/mysql/bin/mysqld: error while loading shared libraries: libnuma.so.1: cannot open shared object file: No such file or directory
#则执行以下命令:
yum -y install numactl
#完成后继续安装:
/usr/local/mysql/bin/mysqld --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data --initialize
若报错如下,可输入 yum install libaio* 解决
Installing MySQL system tables.../usr/local/mysql/bin/mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
#编辑/etc/my.cnf
vi /etc/my.cnf
进入vi后,按i插入下面代码块
[mysqld]
datadir=/usr/local/mysql/data
basedir=/usr/local/mysql
socket=/tmp/mysql.sock
user=mysql
port=3306
character-set-server=utf8
# 取消密码验证
skip-grant-tables
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# skip-grant-tables
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
按Ctrl+C,
然后输入
:wq
就保存退出了。
7. 开启服务
#将mysql加入服务
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
#开机自启
chkconfig mysql on
#开启
service mysql start
#关闭代码如下,但不需要关闭后面还有操作
service mysql stop
- 设置密码
#登录(由于/etc/my.cnf中设置了取消密码验证,所以此处密码任意
/usr/local/mysql/bin/mysql -u root -p
若出现如下报错:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
输入:
mysql
会报错如下:
mysql: command not found
这个是因为/usr/local/bin目录下缺失mysql导致,只需要以下方法建立软链接,即可以解决:
把mysql安装目录,比如MYSQLPATH/bin/mysql,映射到/usr/local/bin目录下:
cd /usr/local/bin
ln -fs /MYSQLPATH/bin/mysql mysql
再输入#mysql即可进入mysql
#接下来就是用sql来修改root的密码
mysql> use mysql;
mysql> update user set authentication_string=password("你的新密码") where user="root";
mysql> flush privileges;
mysql> quit
到这里root账户就已经重置成新的密码了。
编辑my.cnf,去掉刚才添加的内容,然后重启MySQL。大功告成!
- 登录再次设置密码(不知道为啥如果不再次设置密码就操作不了数据库了)
/usr/local/mysql/bin/mysql -u root -p
mysql>ALTER USER 'root'@'localhost' IDENTIFIED BY '修改后的密码';
mysql>exit;
允许远程连接
/usr/local/mysql/bin/mysql -u root -p
mysql>use mysql;
mysql>update user set host='%' where user = 'root';
mysql>flush privileges;
mysql>eixt;
cent OS下干净卸载mysql
使用以下命令查看当前安装mysql的情况
rpm -qa | grep -i mysql
显示之前安装的东西,示例:
MySQL-client-5.5.25a-1.rhel5
MySQL-server-5.5.25a-1.rhel5
停止mysql服务,删除这些安装的内容
删除命令:
rpm -e –nodeps 包名
rpm -ev MySQL-client-5.5.25a-1.rhel5
rpm -ev MySQL-server-5.5.25a-1.rhel5
如果提示依赖包错误,则使用以下命令尝试
rpm -ev MySQL-client-5.5.25a-1.rhel5 --nodeps
如果提示错误:error: %preun(xxxxxx) scriptlet failed, exit status 1
则用以下命令尝试:
rpm -e --noscripts MySQL-client-5.5.25a-1.rhel5
查找之前老版本的mysql的目录、并且删除老版本mysql的文件和库
find / -name mysql
显示:
/var/lib/mysql
/var/lib/mysql/mysql
/usr/lib64/mysql
删除对应的mysql目录
rm -rf /var/lib/mysql
rm -rf /var/lib/mysql
rm -rf /usr/lib64/mysql
查找目录并删除
注意:卸载后/etc/my.cnf不会删除,需要进行手工删除
rm -rf /etc/my.cnf
再次查找机器是否安装mysql
rpm -qa|grep -i mysql
无结果,说明已经卸载彻底
