前言

之前一直用别人的数据库,我真怕哪一天数据库进不去,里面的数据我就GG了,于是乎我就今天决定了自己安装数据库,下面是步骤

mac和win

这里就不讲了,直接下一步下一步就OK,改下密码 ,今天要讲的是linux

linux安装mysql步骤

1、官网下载包上传到linux某个目录

https://dev.mysql.com/downloads/mysql/5.7.html#downloads

2、解压

tar -xvf mysql-5.7.29-linux-glibc2.12-x86_64.tar 

3、移动并且改名字

这里不移动我感觉应该也可以

mv mysql-5.7.29-linux-glibc2.12-x86_64 /usr/local/mysql

4、创建数据目录并赋予权限

mkdir -p  /data/mysql              #创建目录
chown mysql:mysql -R /data/mysql   #赋予权限

5、配置my.cnf

vim /etc/my.cnf

内容如下

[mysqld]
bind-address=0.0.0.0
port=3306
user=mysql
basedir=/usr/local/mysql
datadir=/data/mysql
socket=/tmp/mysql.sock
log-error=/data/mysql/mysql.err
pid-file=/data/mysql/mysql.pid
#character config
character_set_server=utf8mb4
symbolic-links=0
explicit_defaults_for_timestamp=true

二、初始化数据库

1、进去mysql目录

cd /usr/local/mysql/bin/

2、初始化

 ./mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql-5.7.29/ --datadir=/data/mysql/ --user=mysql --initialize

假如报错见如下解决

3、查看密码

cat /data/mysql/mysql.err

三、启动并改密码

1、复制并设置开机自启

cp /usr/local/mysql-5.7.29/support-files/mysql.server /etc/init.d/mysql

2、启动

service mysql start

见到success就表示启动成功

3、登录

/usr/local/mysql-5.7.29/bin/mysql -uroot -p

输入刚刚error文件的密码

四、报错解决

1、远程访问1130 - Host '116.30.196.156' is not allowed to connect to this MySQL server

这个问题就是user表中没有权限

show databases; 

image.png

select Host, User from user;

image.png

update user set Host='%' where User='root';

image.png

2、报错initialize specified but the data directory has files in it. Aborting.Newly created data

删除/data/mysql 文件夹

3、You must reset your password using ALTER USER statement before executing this statement.

修改密码

alter user user() identified by "123456";

4、导入数据 Got a packet bigger than ‘max_allowed_packet’ bytes的解决方法

修改my.cnf,需重启mysql

max_allowed_packet=256M (根据实际情况调整数值)

5、运行两三天报错: Packet for query is too large (9,653 > 1,024). You can change this value on the server by setting the 'max_allowed_packet' variable.

mysql5数据,插入或更新字段有大数据时(大于1M),会出现如上错误

先查看其参数大小,其默认值为1048576(1M)

show VARIABLES like '%max_allowed_packet%';

1.修改mysql设置,需重启mysql

mysql  -uroot -p
set global max_allowed_packet = 1000*1024*1024;
service mysql restart

2.修改my.cnf,没有的话加入一行配置

max_allowed_packet=10M

假如修改后频繁失效变成1024大小我从网上了解到导致这个原因可能有两种情况。
1、服务器内存不够。
2、骇客攻击。
内存你可以隔一段时间去看下服务器,你可以适当认为是不是内存,关掉其他服务排除可能性,假如还是不行你就要去看下mysqllog日志
通过下面操作可找到日志的路径。。。

1、查看日志路径,有一个 --log-error=/data/mysql/mysql.err 文件
ps -ef | grep mysql
2、查看日志文件

对这个不了解,要不改密码,端口号什么的,但我目前只是改了密码,封了那个ip。
内网访问你其实可以不开远程也可以。

话后语:其实你的密码比如123456,这样简单密码,人家会扫描工具来破解的,但是没损坏你的数据算万幸,至今为止,是我第一次碰见骇客,以前对骇客只是有所耳闻,这些利用自己的知识出于特别的目的去侵犯他人的权益的人到底在生活中是什么样的人?我无法想象。

6、连接mysql报找不到

这是由于系统默认会查找/usr/bin下的命令,如果这个命令不在这个目录下,当然会找不到命令,我们需要做的就是映射一个链接到/usr/bin目录下,相当于建立一个链接文件。

ln  -s   /usr/local/mysql-5.7.29/bin/mysql    /usr/bin

7、改密码

-- 登陆
/usr/local/mysql-5.7.29/bin/mysql -uroot -p
-- 修改密码
UPDATE mysql.user SET authentication_string=PASSWORD('root') WHERE User='root';
-- 刷新下    
FLUSH PRIVILEGES;