1.环境
下载地址:https://dev.mysql.com/downloads/mysql/
如下图
系统 | CentOS Linux release 7.6.1810 (Core) |
mysql | mysql-5.7.27-linux-glibc2.12-x86_64.tar.gz |
2.安装
2.1 解压下载的mysql
tar -zxvf mysql-5.7.27-linux-glibc2.12-x86_64.tar.gz
2.2 移动到 /usr/local/ 目录下并重命名
mv mysql-5.7.27-linux-glibc2.12-x86_64 /usr/local/mysql
2.3 进入到 /usr/local/mysql 下,并创建data文件夹
cd /usr/local/mysql
mkdir data
2.4 为了防止权限导致的问题,先修改mysql目录权限(这里没有新建用户,而是直接用root用户,为了安全还是新建mysql或其他用户来操作比较好)
chmod -R root.root /usr/local/mysql
2.5 初始化mysql(下面红色部分注意替换成自己的目录。当前所在路径为/usr/local/mysql)
./bin/mysql_install_db --user=root --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/
2.6 复制配置文件(mysql5.7.18之后不再自动生成my.cnf配置文件,具体参考https://dev.mysql.com/doc/refman/5.7/en/binary-installation.html 。如果不用my.cnf配置文件也是可以正常运行的,为了配置方便,可以从其他mysql安装服务器上copy一个拿来用)
我这里copy一个my.cnf文件至/etc目录下,mysql默认加载配置文件路径如下
2.7 将mysql放到本地服务中
cp -a ./support-files/mysql.server /etc/init.d/mysql
3.启动并修改相关配置
3.1 启动/停止mysql
service mysql start
service mysql start
3.2 登录
输入命令 mysql 或者 mysql -u root mysql 。此时可能会报错,如果报错就继续3.3,否则调制3.4
3.3 修改mysql的root密码 (注意下面是是多行命令,每次执行一条命令)
service mysql srop
mysqld_safe --user=root --skip-grant-tables --skip-networking &
mysql -u root mysql
#UPDATE user SET Password=PASSWORD('admin') where USER='root'; --mysql5.7.18以前修改密码
UPDATE user SET authentication_string=PASSWORD('admin') where USER='root';--mysql5.7.18以后修改密码
FLUSH PRIVILEGES;
quit
/etc/init.d/mysql restart
mysql -uroot -p
输入密码即可
3.4 调整mysql为任意ip科登录(生产请根据安全策略自行修改)
mysql -uroot -padmin #登录mysql
use mysql; --使用mysql库
update user set host='%' where user='root'; --更改任意ip可使用root用户登录mysql
flush privileges; --刷新权限,然后可以使用远程登录进行测试
3.5 开放linux的3306端口
linux设置开放端口号
firewall-cmd --zone=public --add-port=3306/tcp --permanent
查看某端口是否开启
firewall-cmd --query-port=3306/tcp
重启防火墙
firewall-cmd --reload
查看开启了哪些端口
firewall-cmd --list-port
或者关闭linux防火墙(不推荐)
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动
调整完成后进行远程登录测试
4.常见错误及解决
4.1 报错 ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
解决:登录mysql。并执行 set password = password('admin'); --上面设置的密码
4.2 报错 ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
解决: 登录mysql并使用mysql库,执行update user set host='%' where user='root'; flush privileges; 两条命令
4.3 报错 ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
解决:修改mysql密码,执行以下所有命令
service mysql stop
/usr/local/mysql/bin/mysqld_safe --user=root --skip-grant-tables --skip-networking &
mysql -u root mysql
--update user set password=password('admin') where user='root'; --mysql5.7.18之前版本
update user set authentication_string=password('admin') where user='root'; --mysql5.7.18以后版本
flush privileges;
quit
重启并登录
service mysql restart
mysql -uroot -padmin
4.4 配置文件/etc/my.cnf不起作用或报警告mysql: [Warning] World-writable config file '/etc/my.cnf' is ignored.
解决 :mysql认为my.cnf文件没有权限限制,不安全,所以修改my.cnf文件权限
chmod 644 /etc/my.cnf
4.5 报错bash: mysql: 未找到命令...
解决:创建链接 ln -s /usr/local/mysql/bin/mysql /usr/bin
4.6 报错ERROR! The server quit without updating PID file (/usr/local/mysql/data/localhost.localdomain.pid).
解决:可能是因为相关文件没有读写权限,修改mysql目录权限(这里给了不限制权限,根据自己实际情况修改)
chmod -R 777 /usr/local/mysql/
4.7 报错Failed to start mysql.service: Unit not found.
解决:cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
5.彻底卸载mysql
5.1 rpm -e --nodeps mysql 或者 yum remove mysql mysql-server mysql-libs compat-mysql51
删除相关文件 rm -rf /var/lib/mysql 和 rm /etc/my.cnf
5.2 rpm -qa|grep mysql命令来查看安装的mysql 并使用 rpm -e [...] 删除展示列表
5.3 找出系统中所有mysql相关文件并删除
find / -name mysql
rm -rf [...]