在服务器上安装MySQL服务,用于存储持久化数据,并设置成开机自启,避免服务器重启后需要人为进行启动操作。下载安装包:MYSQL 5.7
1、卸载Linux系统中自带的mariadb
# 查看系统中mariadb版本以及安装文件
rpm -qa|grep maridb
# 卸载mariadb(“*”指mariadb文件)
rpm -e --nodeps *
# 删除配置文件(相关配置文件)
如:rm -rf /etc/my.cnf
2、检查MySQL是否还存在
rpm -qa|grep maridb
3、查看用户和组是否存在
cat /etc/group | grep mysql
cat /etc/passwd | grep mysql
# 如果不存在则新建mysql用户和组
4、上述操作确保安装MySQL的环境是无干扰的
5、新建mysql安装目录:
mkdir /home/mysql
6、进入安装目录:
cd /home/mysql
7、上传MySQL安装包:
rz
8、解压安装文件:
tar -zxvf mysql-<version>.tar.gz
9、将解压出来的文件,重命名成“mysql”:
mv mysql-<version>/ mysql
10、更改mysql安装目录的所属用户和组
chown -R mysql mysql/ chgrp -R mysql mysql/
# 进入mysql文件
cd mysql/
# 查看是否存在数据存储文件data,如果不存在则创建,存在则忽略此项操作
mkdir data
chown -R mysql:mysql data
11、进入mysql安装目录:/home/mysql/mysql,安装mysql
1、./scripts/mysql_install_db --user=mysql
2、/usr/local/mysql/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql/mysql --datadir=/home/mysql/data
#(MySQL版本在5.7之前的安装命令), basedir / datadir替换成具体的目录
# 可能会报异常:FATAL ERROR: please install the following Perl modules before executing
解决方案: yum -y install autoconf
12、执行上一步操作后,生成文件mysql配置文件my.cnf,编辑my.cnf
vi my.cnf
[client]
socket=/var/lib/mysql/mysql.sock [mysql]
socket=/var/lib/mysql/mysql.sock # 客户端字符编码
default-character-set=utf8 [mysqld]
socket=/var/lib/mysql/mysql.sock #mysql默认端口 port=3306
#mysql安装目录
basedir=/home/mysql/mysql
# mysql数据存放目录
datadir=/home/mysql/mysql/data
# 设置最大连接数
# max_connections=200
# 数据库字符编码
character-set-server=utf8
# 设置默认存储引擎
default-storage-engine=INNODB
lower_case_table_names=1
max_allowed_packet=16M
explicit_defaults_for_timestamp=true
#指定错误日志路径
log-error = /home/mysql/mysql/log/error.log
#指定PID文件路径
pid-file = /home/mysql/mysql/data/mysql/mysql.pid
[mysql.server]
user=mysqlcd
basedir=/home/mysql/mysql
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
13、设置开机自启动服务
# 如果rc.d,则直接输入
/etc/init.d/mysqld
cp ./support-files/mysql.server /etc/rc.d/init.d/mysqld
chmod +x /etc/rc.d/init.d/mysqld
chkconfig --add mysqld chkconfig --list mysqld
# 命令输出结果:mysqld 0:off 1:off 2:on 3:on 4:on 5:on 6:off
# 表明mysqld服务已经生效,在2/3/4/5运行级别随系统启动而自动启动,以后可以使用service命令控制服务启动和停止
14、修改 /etc/init.d/mysqld 文件内的basedir 和 datadir
basedir 默认目录是”/usr/local/mysql” 改成实际安装路径 ”/home/mysql/mysql”
datadir 默认目录是”/usr/local/mysql/data” 改成实际安装路径 “/home/mysql/mysql”
15、配置环境变量:
vi /etc/profile
export PATH=$PATH:/home/mysql/mysql/bin
# 保存并退出
<esc> + :wq
# 重新加载
source /etc/profile
16、启动mysql服务
service mysqld start
启动可能会报的异常:
“Starting MySQL.. ERROR! The server quit without updating PID file (/home/mysql/mysql/data/mysql/mysql.pid)”,
分析:多数情况下则是自定义存储文件的权限不够,需要指定用户和用户组:
chown -R mysql:mysql
<安装MySQL过程中,所有自定义的文件目录>
17、登录mysql
mysql -u root -p # 默认没有密码,直接回车即可
18、在此处可能会报错:
1、提示“ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)”
原因是:在启动时系统会默认启动“/tmp/mysql.sock”,而不是启动my.cnf中配置socket 的 “/var/lib/mysql/mysql.sock”
解决方式:将socket启动文件“/var/lib/mysql/mysql.sock”指向“/tmp/mysql.sock”
执行命令: ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock
2、提示“bash:mysql: command not found...”
原因是:没有在/usr/bin目录下生成MySQL命令
解决方案:ln -s
<具体MySQL的安装目录下bin文件夹的mysql> /usr/bin
例如:ln -s /usr/local/mysql/bin/mysql /usr/bin
19、重启服务:
service mysqld restart
20、执行登录:
mysql -u root -p # 目前root用户默认是无密码登录的,为了安全则需要设置密码
use mysql;
# (mysql5.7版本之前)
1、update user set password = password(‘设置的密码’) where user = ‘root’;
# (mysql5.7版本之后)
2、update user set authentication_string=password(‘设置的密码’) where user = ‘root’;
# 退出 exit;
21、重启服务:
service mysqld restart
# 之后root登录则会提示需要输入password
22、开启远程连接:
# 第一个“*”表示所有数据库名(也可指定具体的数据库名)
# 第二个“*”表示所有数据库表名(也可指定具体的数据库表名)
# “%”表示允许所有的IP地址访问到mysql;同时也可以将“%”换成具体的IP地址
grant all privileges on *.* to root@'%' identified by 'root' with grant option;
flush privileges;