linux下mysql的安装
安装前准备
1. 系统:CentOS7
2. 准备工作
- 1)检查是否已经安装过mysql,执行命令
rpm -qa | grep mysql #检查是否已经安装过mysql
rpm -e --nodeps mysql-libs-5.1.73-5.el6_6.x86_64 #如果上述命令查出有历史版本,则删除该版本(查出来的版本);没查出则不用管
rpm -qa | grep mysql #再次查看删除成功没
- 2)查询所有Mysql对应的文件夹
whereis mysql或者find / -name mysql
rm -rf xxx #删除上述步骤查出的mysql文件目录
whereis mysql或者find / -name mysql #验证删除完成没
- 3)检查mysql用户组和用户是否存在,如果没有,则创建
cat /etc/group | grep mysql
cat /etc/passwd |grep mysql
groupadd mysql
useradd -r -g mysql mysql
- 4)从官网下载是用于Linux的Mysql安装包
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz #版本可以自己选择
# mysql8.x
https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.24-linux-glibc2.12-x86_64.tar.xz
安装Mysql
1. 开始安装
- 1)解压
tar xzvf mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz
mv mysql-5.7.24-linux-glibc2.12-x86_64 /usr/local/mysql #解压完成后的mysql目录移动到/usr/local/目录下,更名为mysql
- 2)在/usr/local/mysql目录下创建data目录
mkdir /usr/local/mysql/data
- 3)更改mysql目录下所有的目录及文件夹所属的用户组和用户,以及权限
chown -R mysql:mysql /usr/local/mysql
chmod -R 755 /usr/local/mysql
- 4)编译安装并初始化mysql,初始化成功会显示一个临时密码,务必记住初始化输出日志末尾的密码(数据库管理员临时密码)
cd /usr/local/mysql/bin
./mysqld --initialize --user=mysql --datadir=/usr/local/mysql/data --basedir=/usr/local/mysql
- ps:第4步可能出现以下错误
① 缺少libaio包
② 缺少numa包
解决办法
yum install libaio-devel.x86_64
yum -y install numactl
- 5)解决后,重新执行第4步的命令,成功会显示一个临时密码,务必记住初始化输出日志末尾的密码
- 6)编辑配置文件my.cnf,添加配置如下
vi /etc/my.cnf
# 注意:默认的mysqld删除了就是
[mysqld]
# data目录
datadir=/usr/local/mysql/data
# 临时文件目录(不指定的话默认放/tmp,可能存在权限之类的问题,最好手动指定)
tmpdir=/usr/local/mysql/data/tmp
port = 3306
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
symbolic-links=0
max_connections=400
innodb_file_per_table=1
#表名大小写不明感,敏感为
lower_case_table_names=1
#mysql默认字符集是latin1,这儿设置为utf8
character-set-server=utf8
init_connect='SET NAMES utf8
- 7)启动mysql服务器
/usr/local/mysql/support-files/mysql.server start #显示成功则ok
ps:第7步可能出现如下错误
启动报错1:
Starting MySQL... ERROR! The server quit without updating PID file
解决:查看是否存在mysql和mysqld的服务,如果存在,则结束进程,再重新执行启动命令
#查询服务
ps -ef|grep mysql
ps -ef|grep mysqld
#结束进程
kill -9 PID
#启动服务
/usr/local/mysql/support-files/mysql.server start
启动报错2:
Starting MySQL.2020-06-13T08:58:42.642451Z mysqld_safe error: log-error set to '/var/log/mariadb/mariadb.log', however file don't exists. Create writable for user 'mysql'.
ERROR! The server quit without updating PID file (/usr/local/mysql/data/hadoop1.pid).
原因:没有路径也没有权限
解决方案:
1 创建路径:mkdir /var/log/mariadb
2 创建文件:touch /var/log/mariadb/mariadb.log
3 授予权限:chown -R mysql:mysql /var/log/mariadb/mariadb.log
或者
vim /etc/my.cnf
[mysqld_safe]
log-error=/usr/local/mysql/log/mysql.log
pid-file=/usr/local/mysql/log/mysql.pid
启动报错3:
原因:tmp目录没有给mysql用户权限
解决方案:mysql tmp目录没权限解决
chown -R 777 /tmp
最好在安装时候就指定临时目录,查看如下命令:show variables like '%dir%' ;
- 8)添加软连接,并重启mysql服务
ln -s /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
ln -s /usr/local/mysql/bin/mysql /usr/bin/mysql
service mysql restart
- 9)登录mysql,修改密码(密码为步骤4生成的临时密码)
[root@localhost /]# mysql -u root -p
Enter password:
mysql>set password for root@localhost = password('yourpass');
第9步可能报错:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'password('yourpass')' at line 1
解决方案:因为你装的版本比较不是5.x的,比如是mysql8.x的,修改密码语句不一样,mysql8.x可以用下面的语句:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'yourpwd';
- 10)开放远程连接
use mysql;
update user set user.Host='%' where user.User='root';
flush privileges;
- 11)设置开机自动启动
1、将服务文件拷贝到init.d下,并重命名为mysql
[root@localhost /]# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
2、赋予可执行权限
[root@localhost /]# chmod +x /etc/init.d/mysqld
3、添加服务
[root@localhost /]# chkconfig --add mysqld
4、显示服务列表
[root@localhost /]# chkconfig --list
- 12)重启mysql
systemctl restart mysqld #CentOS7的命令是这样的
mysql -uroot -p # 登录
mysql>status; #查看默认编码是否改为了utf8
或者
mysql>show variables like '%character%'; #查看默认编码是否改为了utf8
在使用Navicat远程连接一波mysql