Linux使用宝塔面板安装Mysql
根据需求, 需要在Linux环境中安装Mysql8.0.13版本, 由于宝塔面板提供版本无法满足需求, 所以需要通过自己下载上传的方式安装。
1. Mysql下载
最新版本下载地址
历史版本下载地址
可根据需求选择相应版本下载
2. 手动安装
-
安装前,首先检查一下本地是否有安装过,避免冲突, 输入
rpm -qa|grep mysql
, (没有输出就是没有安装过), 如果默认安装了, 使用yum remove mysql
(模糊匹配即可)
-
安装依赖
yum install -y cmake make gcc gcc-c++ libaio ncurses ncurses-devel
-
找到对应版本Myslql下载地址, 右键Download复制下载地址
-
使用
wget https://downloads.mysql.com/archives/get/file/mysql-8.0.13-linux-glibc2.12-x86_64.tar.xz /usr/loca/src
(速度太慢, 使用另一种方式)
-
由于步骤4方法速度较慢, 可以先将所需压缩包下载到本地, 再使用ftp上传至服务器
-
添加系统MySQL系统用户组和mysql用户
系统MySQL组:groupadd mysql
添加mysql用户:useradd -r -g mysql mysql
-
解压压缩包:
tar xvf mysql-8.0.13-linux-glibc2.12-x86_64.tar
-
解压:
tar xvf mysql-8.0.13-linux-glibc2.12-x86_64.tar.xz
-
复制到指定目录:
cp -r mysql-8.0.13-linux-glibc2.12-x86_64 /usr/local/mysql
-
修改当前目录拥有者为mysql用户
chown -R mysql:mysql ./
语法: chown [选项] [所有者]:[组] 文件 -
安装
bin/mysqld --initialize --user=mysql --lower-case-table-names=1 --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
(–lower-case-table-names=1: 表名以小写形式存储在磁盘上, 名称比较不区分大小写,0是区分大小写的,生产环境设置为1), 默认是0, 即时在配置文件里面指定为1, 但是启动数据库服务的时候设置不一致, 会报错
-
修改当前data目录拥有者为mysql用户
chown -R mysql:mysql data
-
查看系统是否有libaio包,如果没有无法运行mysql数据库
rpm -qa | grep libaio
如上图表示已安装 -
启动
/usr/local/mysql/bin/
目录下的mysqld
, 命令./mysqld --initialize --user=mysql
其中, A temporary password is generated for root@localhost: yVfa&G+:t4Bh, 这是mysql数据库自动生成的临时root密码 -
(此步骤暂时无用)
vi /usr/local/mysql/support-files/my-default.cnf
[mysqld] character_set_server=utf8 init_connect='SET NAMES utf8' basedir=/usr/local/mysql datadir=/usr/local/mysql/data socket=/tmp/mysql.sock #不区分大小写 (sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES 这个简单来说就是sql语句是否严格) lower_case_table_names = 1 log-error=/var/log/mysqld.log pid-file=/usr/local/mysql/data/mysqld.pid
-
(此步骤暂时无用)保存退出,然后覆盖到/etc/my.cnf
cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf
-
添加开机启动:
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
-
修改:
vim /etc/init.d/mysqld
, 在46, 47行添加如下内容
-
启动mysql
systemctl start mysql.service
-
添加开机启动:
chkconfig --add mysqld
-
登录MySQL服务:
mysql | -uroot -p
提示找不到命令, 添加软连接:ln -s /usr/local/mysql/bin/mysql /usr/bin
-
重启mysql
-
重新登录, 使用之前的默认密码
-
执行
show databases;
(一定要有分号)
提示修改密码,alter user root@localhost identified by 'root';
-
查看mysql状态:
service mysqld status
-
设置mysql允许远程登录:
GRANT ALL PRIVILEGES ON *.* TO root@% IDENTIFIED BY '密码' WITH GRANT OPTION;
提示错误, 切换mysql数据库, 使用update user set host = '%' where user = 'root';
, 然后FLUSH PRIVILEGES;
-
防火墙开放端口:
firewall-cmd --zone=public --add-port=5672/tcp --permanent
, 并使用firewall-cmd --reload
刷新, 使用firewall-cmd --zone=public --list-ports
查看所有开放端口
-
使用navicat测试连接, 提示错误
原因MySQL8之前的版本加密规则, mysql_native_password.mysql8之后, 加密规则是caching_sha2_password.例如Navicat客户端工具只支持旧的版本, 需要修改加密规则,alter user 'root'@'%' identified by 'root' password expire never;
, 然后更新 root 用户密码,alter user 'root'@'%' identified with mysql_native_password by 'root';
, 并刷新权限FLUSH PRIVILEGES;
再次使用 navicat 测试连接
成功 ! 终于tmd成功了 !
3. Mysql卸载
- 由于没有使用rpm的方式安装Mysql,故没有依赖
- 停止服务,
service mysql stop
, 使用rpm -qa|grep mysql
查看 - 直接删除MYSQL的安装目录, 例如这里是
/usr/local/mysql
- 删除配置文件:
rm -rf /etc/my.cnf
,rm -rf /etc/init.d/mysqld