CentOS下安装MySQL5.7.25步骤如下
1、MySQL官网下载5.7.25的Linux 64位二进制版本
2、SFTP方式上传MySQL二进制安装包并解压
[root@localhost ~]# tar -zxvf mysql-5.7.25-linux-glibc2.12-x86_64.tar.gz
3、创建/usr/local/mysql并将
[root@localhost ~]# mkdir /usr/local/mysql
[root@localhost ~]# mv mysql-5.7.25-linux-glibc2.12-x86_64/* /usr/local/mysql
4、创建mysql用户以及data目录
[root@localhost mysql]# useradd -s /sbin/nologin -M mysql
[root@localhost mysql]# mkdir data
[root@localhost mysql]# pwd
/usr/local/mysql
[root@localhost mysql]# chown -R mysql.mysql ./
5、接下来初始化数据库安装
[root@localhost ~]# cd /usr/local/mysql/bin
[root@localhost bin]# ./mysqld —initialize —user=mysql —basedir=/usr/local/mysql/ —datadir=/usr/local/mysql/data/
6、设置mysql服务开机自启动
[root@localhost mysql]# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
[root@localhost mysql]# chmod +x /etc/init.d/mysqld
[root@localhost mysql]# chkconfig —add mysqld
[root@localhost mysql]# chkconfig —list mysqld
mysqld 0:off 1:off 2:on 3:on 4:on 5:on 6:off
[root@localhost mysql]# service mysqld status
ERROR! MySQL is not running
[root@localhost mysql]# service mysqld start
可以看到mysql服务启动失败
7、这时修改/etc/my.cnf并创建/var/run/mysqld目录
[root@localhost bin]# vi /etc/my.cnf
[mysqld]
datadir=/usr/local/mysql/data
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
接下来chown -R mysql.mysql /var/lib/mysql/
重启mysqld服务
8、 环境变量配置
将mysql的bin目录加入PATH环境变量,
编辑 /etc/profile文件:[root@localhost mysql]# vim /etc/profile
PATH=$PATH:/usr/local/mysql/bin
export PATH
执行命令使其生效:[root@localhost mysql]# source /etc/profile
用 export 命令查看PATH值:[root@localhost mysql]# echo $PATH
9、常见问题
1)[root@localhost ~]# mysql
ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’ (2)
解决办法:
[root@localhost ~]# ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock
2)[root@localhost ~]# mysql
ERROR 1045 (28000): Access denied for user ‘root’@’localhost’ (using password: NO)
解决办法:my.cnf中[mysqld]下面加skip-grant-tables
然后重启mysqld服务,接下来修改mysql表中root用户密码
mysql>use mysql;
mysql> update user set authentication_string = password(‘admin@123’) where user = ‘root’
mysql>flush privileges;
也可以用SET PASSWORD = PASSWORD(‘Admin@2019’);设置密码
修改root密码后my.cnf中[mysqld]下面再去掉skip-grant-tables,恢复原始的状态,然后重启mysqld服务,这时用mysql -uroot -p”admin@123”本地就可以登录了
3)使用Navicat远程登录MySQL(前提:防火墙限制已放开)
给root授予在任意主机(%)访问任意数据库的所有权限
mysql>grant all privileges on . to ‘root’@’%’ identified by ‘admin@123’ with grant option;
mysql> flush privileges;
#为密码为 admin@123 、IP(%)任意的 root 用户授权。(%:模糊查询,所有 IP 都可以,,可指定其他主机 IP;by 后的 ‘admin@123 为密码