这次主要是讲解mysql5.7离线安装教程和一主一从数据库配置
1、去官网下载自己对应的mysql
https://downloads.mysql.com/archives/community/
2、查看需要安装mysql服务器的linux的类型
uname -a
第二步看一下系统有没有安装mysql
rpm -qa|grep -i mysql
3、上传安装包
用远程链接工具将安装包传输到对应的服务器为位上
#创建压缩包放的位置
mkdir -p /usr/mysql
4、解压
#我直接解压到/usr/mysql下(你们也可以解压到自己想放的路径)
cd /usr/mysql
tar zxvf mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz
#修改一下解压后的文件夹名称
mv mysql-5.7.44-linux-glibc2.12-x86_64 mysql-5.7.44
5、创建MYSQL用户组和用户
# 创建MYSQL用户组
groupadd mysql
# 添加MYSQL用户并添加到MYSQL用户组
useradd -r -g mysql mysql
#修改属组及属组用户和文件夹权限
chown -R mysql:mysql mysql-5.7.44
chmod -R 775 mysql-5.7.44
6、创建data数据目录
#创建data目录,一般都是放在对应的解压文件夹里,也可以放在其他地方,我这就放在/usr/mysql/mysql-5.7.44下
cd /usr/mysql/mysql-5.7.44
mkdir data
7、配置my.cnf文件
#直接vi编辑
vi /etc/my.cnf
添加内容如下
#mysql的安装目录(就是解压路径)
basedir=/usr/mysql/mysql-5.7.44
#mysql数据库的数据的存放data目录
datadir=/usr/mysql/mysql-5.7.44/data
#设置3306端口(也可以用其他的,生产环境中,尽量不要用3306,改用其他的)
port=3306
#允许最大连接数
max_connections=200
#允许连接失败的次数,可防止被攻击
max_connect_errors=10
#使用的字符集utf8mb4,utf8mb4比utf-8好一些,能兼容一些特殊数据
character-set-server=utf8mb4
#创建新表时使用的默认存储引擎
default-storage-engine=INNODB
#使用mysql_native_password插件认证,mysql_native_password
default_authentication_plugin=mysql_native_password
#设置查询操作等不区分大小写
lower_case_table_names=1
#mysql客户端默认字符集
[mysql]
default-character-set=utf8mb4
8、配置mysql.server
路径修改
#修改一下/usr/mysql/mysql-5.7.44/support-files/mysql.server里的配置
vi /usr/mysql/mysql-5.7.44/support-files/mysql.server
9、初始化mysql
#到mysql的安装目录(就是解压路径)下的bin执行
#defaults-file:配置文件地址(/etc/my.cnf)
#basedir:mysql的安装目录(就是解压路径)
#datadir:创建的data数据目录
#user:创建的mysql用户
cd /usr/mysql/mysql-5.7.44/bin
./mysqld --defaults-file=/etc/my.cnf --basedir=/usr/mysql/mysql-5.7.44 --datadir=/usr/mysql/mysql-5.7.44/data --user=mysql --initialize
#注:初始化后最后一行会给个密码,最好复制保存一下
10、配置连接
拷贝mysql.server这份启动文件到系统环境下,当然建立软连接也可以,我这使用软连接
#配置
ln -s /usr/mysql/mysql-5.7.44/support-files/mysql.server /etc/init.d/mysql
#查看是否成功
ll /etc/init.d/mysql
#配置
ln -s /usr/mysql/mysql-5.7.44/bin/mysql /usr/local/bin/mysql
#查看是否成功
ll /usr/local/bin/mysql
11、启动命令
service mysql start #启动mysql服务
service mysql stop #停止mysql服务
service mysql restart #重启mysql服务
12、修改密码
mysql -u root -p
#再次登录
mysql -u root -p
#输入初始化得到的密码
#修改密码为Ling@2023(自己的自行决定)
set password for root@localhost = password('Ling@2023');
#设置用户的访问密码用不过期
ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
#配置远程连接
use mysql;
update user set host='%' where user='root';
#刷新
FLUSH PRIVILEGES;
11、设置自启动
#退出mysql,在root帐户下改
chkconfig --add mysql
#查看是否成功
chkconfig --list
13、配置远程控制
# 开启端口3306
firewall-cmd --zone=public --add-port=3306/tcp --permanent
# 重启防火墙
firewall-cmd --reload
# 查看已经开放的端口
firewall-cmd --list-ports
14、数据导入
配置如何配置sql数据,导入数据;
mysqlimport -u root -p --local your_database_name /path/to/your_data_file.csv
数据导出
mysql -u root -p your_database_name < /path/to/your_sql_file.sql
-u 或 --user=USERNAME:
指定连接 MySQL 的用户名。
mysqldump -u root
-p 或 --password=PASSWORD:
指定连接 MySQL 的密码。如果不指定密码,系统会提示输入。
mysqldump -u root -p
-h 或 --host=HOSTNAME:
指定 MySQL 服务器的主机名或 IP 地址。
mysqldump -u root -p -h 192.168.1.100
–all-databases:
备份所有数据库。
mysqldump -u root -p --all-databases
--databases:
备份指定的多个数据库。
mysqldump -u root -p --databases db1 db2 db3
–ignore-table=TABLE_NAME:
忽略指定的表,不进行备份。
mysqldump -u root -p --databases dbname --ignore-table=dbname.table1
–lock-tables:
备份过程中锁定表,防止数据变化。
mysqldump -u root -p dbname --lock-tables
--single-transaction:
在事务中进行备份,适用于 InnoDB 表,确保数据一致性。
mysqldump -u root -p dbname --single-transaction
–quick 或 -q:
快速导出大表,减少内存占用。
mysqldump -u root -p dbname --quick
–compress 或 -C:
压缩导出的数据,适用于通过网络传输。
mysqldump -u root -p dbname --compress
--result-file=FILE_NAME:
指定导出文件的名称。
mysqldump -u root -p dbname --result-file=backup.sql
注意事项
1、如果在配置完my.cnf后,第一次启动出现错误时,可以看一下是不是日志文件输出目录没有创建;
2、如果启动mysql后,出现什么问题,可以查看mysql日志文件中是怎么显示的;
3、mysql 数据库在迁移或还原数据过程中出现的如下报错:
ERROR 1231 (42000): Variable 'time_zone' can't be set to the value of 'NULL'
ERROR 1231 (42000): Variable 'sql_mode' can't be set to the value of 'NULL'
ERROR 1231 (42000): Variable 'foreign_key_checks' can't be set to the value of 'NULL'
ERROR 1231 (42000): Variable 'unique_checks' can't be set to the value of 'NULL'
ERROR 1231 (42000): Variable 'character_set_client' can't be set to the value of 'NULL'
Query OK, 0 rows affected (0.00 sec)
ERROR 1231 (42000): Variable 'collation_connection' can't be set to the value of 'NULL'
ERROR 1231 (42000): Variable 'sql_notes' can't be set to the value of 'NULL'
解决办法:
修改mysql配置文件,编辑my.cnf来修改(windows下my.ini),在[mysqld]段或者mysql的server配置段进行修改。
max_allowed_packet=1024M
查看目前配置:
代码如下:
show VARIABLES like '%max_allowed_packet%';
显示的结果为:
代码如下:
±-------------------±--------+
| Variable_name | Value |
±-------------------±--------+
| max_allowed_packet | 1048576 |
±-------------------±--------+
以上说明目前的配置是:1M
4、本机可以通过3306端口连接mysql服务器,但远程不行。
1、网络检测
1)ping主机可以;
2)telnet 主机3306端口不可以;
telnet 主机22端口可以;
说明与本机网络没有关系;
2、端口检测
1)netstat -ntpl |grep 3306
tcp 0 0 :::3306 :::* LISTEN -
2)netstat -ntpl |grep 22
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN -
可以看出22端口监听所有地址,而3306只监听本机地址(绑定了到了本地),所以远程无法访问。
对于端口只允许本机访问,有两个地方启用,一个是防火墙启用3306,一个就是mysql配置绑定本机地址。
参考:http://blog.csdn.net/fjssharpsword/article/details/50973283
3、防火墙检测
1)iptables --list查看;
2)开启防火墙3306端口
vi /etc/sysconfig/iptables
-A INPUT -m state –state NEW -m tcp -p tcp –dport 3306 -j ACCEPT(允许3306端口通过防火墙)
/etc/init.d/iptables restart(重启防火墙使配置生效)
3)或者直接关闭防火墙;
4、mysql配置文件检查
检查my.cnf的配置,bind-address=addr可以配置绑定ip地址。
不配置或者IP配置为0.0.0.0,表示监听所有客户端连接。
#ps -aux | grep mysql 查看进程ID是3340
#ll /proc/3340 查看进程程序情况,找配置文件或者#which mysql 找程序路径
5、mysql用户访问权限(大多数是链接不上是这种情况)
进入mysql数据库
>mysql -u root -p
>use mysql;
1.>select host,user from user; //查看用户
MySQL建用户的时候会指定一个host,默认是127.0.0.1/localhost只能本机访问;
其它机器用这个用户帐号访问会提示没有权限,host改为%,表示允许所有机器访问。
2.设置host为%
>update user set host='%' where user = 'root';
%为任意用户都有权限连接,localhost为只能本机连接,配置完host为%这一步就已经能外网访问了
3.授权用户具体权限
>grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;
>flush privileges;//刷新权限
4.删除用户
>drop user zhangsan@'%';
注意: 一定要重启mysql: # systemctl restart mysqld
本篇文章离线安装部分参考转自
https://blog.csdn.net/weixin_68547003/article/details/135058922?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522ec66008295d99bf66caceaa32bb9e629%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=ec66008295d99bf66caceaa32bb9e629&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allfirst_rank_ecpm_v1~rank_v31_ecpm-2-135058922-null-null.142%5Ev101%5Epc_search_result_base7&utm_term=CentOS7%E7%8E%AF%E5%A2%83%E4%B8%8B%E7%A6%BB%E7%BA%BF%E5%AE%89%E8%A3%85MySQL5.7.18&spm=1018.2226.3001.4187https://blog.csdn.net/qq_36820328/article/details/79654278;
mysql服务器3306端口不能远程连接参考自
https://blog.csdn.net/qq_36820328/article/details/79654278%EF%BC%9B