离线安装
1、cd /usr/local # 进入压缩包存放的目录
2、tar -xzvf mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz # 解压压缩包
3、mv mysql-5.7.24-linux-glibc2.12-x86_64 mysql # 修改解压出来的文件夹名称为mysql
4、创建用户组
groupadd mysql
useradd -r -g mysql mysql
5、mkdir /usr/local/mysql/data # 创建data文件夹,有些版本没有则需要创建
6、给目录和用户授权
cd /usr/local/ # 进入需要授权的目录
chown -R mysql:mysql mysql/
chmod -R 755 mysql/
执行下面之前去/etc/目录下修改my.cnf配置文件,不然会出现各种PID或者SOCK有关的问题 # 参考网址https://www.cnblogs.com/shizhengquan/p/11249637.html
7、/usr/local/mysql/bin/mysqld --initialize --user=mysql --datadir=/usr/local/mysql/data --basedir=/usr/local/mysql # 初始化操作,得到mysql登录的默认密码
8、复制启动脚本到资源目录
cd mysql # 进入目录
cp ./support-files/mysql.server /etc/rc.d/init.d/mysqld # 进行赋值
9、chmod +x /etc/rc.d/init.d/mysqld # 添加mysqld服务控制脚本执行权限
10、 chkconfig --add mysqld #将mysql服务增加到系统服务
11、 chkconfig --list mysqld # 查看mysql服务是否生效
12、 service mysqld start # 启动mysql
13、ln -s /usr/local/mysql/bin/mysql /usr/bin # 提示找不到语句或者报错执行这一句
14、 mysql -uroot -p # 登录mysql,密码就是初始密码
15、修改密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123'; #如果这句执行错误,则执行下面的
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123';
16、systemctl stop firewalld.service # 关闭防火墙
使用yum安装
在CentOS中默认安装有MariaDB,这个是MySQL的分支,但为了需要,还是要在系统中安装MySQL,而且安装完成之后可以直接覆盖掉MariaDB
1、wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm #下载mysql5.7版本的
2、yum -y install mysql57-community-release-el7-10.noarch.rpm
3、yum -y install mysql-community-server # 这步可能会花些时间,安装完成后就会覆盖掉之前的mariadb
PS:报错未找到匹配的参数: mysql-community-server,执行sudo yum module disable mysql 关闭模块
4、systemctl start mysqld.service # 启动mysql
5、systemctl status mysqld.service # 查看mysql
6、grep "password" /var/log/mysqld.log # 查看mysql的初始密码
7、mysql -uroot -p
8、修改密码策略为简单,看下面的修改策略教程
9、flush privileges; # 强制刷新策略
10、ALTER USER 'root'@'localhost' IDENTIFIED BY 'new password'; # 修改root用户的密码,这一步一定要指定,首次登陆必须修改
11、yum -y remove mysql57-community-release-el7-10.noarch # 因为安装了Yum Repository,以后每次yum操作都会自动更新,需要把这个卸载掉
12、service mysqld start # 启动mysql
13、update user set host = '%' where user = 'root'; # 开启所有ip访问都可,需要进入自身的数据库,use mysql
13、firewall-cmd --zone=public --add-port=80/tcp --permanent # 开启防火墙端口,permanent永久生效,没有此参数重启后失效
14、/sbin/iptables -I INPUT -p tcp --dport 3306 -j ACCEPT # 这个是用iptables时候 如果远程连接不上,则是端口没开,执行这条开启端口即可
修改密码策略
1、SHOW VARIABLES LIKE 'validate_password%'; # 查看策略
参数解释
alidate_password_dictionary_file # 插件用于验证密码强度的字典文件路径。
validate_password_length # 密码最小长度,参数默认为8,它有最小值的限制,最小值为:validate_password_number_count + validate_password_special_char_count + (2 * validate_password_mixed_case_count)
validate_password_mixed_case_count #密码至少要包含的小写字母个数和大写字母个数。
validate_password_number_count # 密码至少要包含的数字个数。
validate_password_policy # 密码强度检查等级,0/LOW、1/MEDIUM、2/STRONG。有以下取值:
Policy Tests Performed
0 or LOW Length
1 or MEDIUM Length; numeric, lowercase/uppercase, and special characters
2 or STRONG Length; numeric, lowercase/uppercase, and special characters; dictionary file
默认是1,即MEDIUM,所以刚开始设置的密码必须符合长度,且必须含有数字,小写或大写字母,特殊字符。
validate_password_special_char_count # 密码至少要包含的特殊字符数。
修改策略执行的语句
set global validate_password_policy=0;
set global validate_password_mixed_case_count=0;
set global validate_password_number_count=0;
set global validate_password_special_char_count=0;
set global validate_password_length=4;
创建用户
create database db1 default charset utf8; # 创建数据库
CREATE USER 'username'@'localhost' IDENTIFIED BY 'password'; # 创建用户和密码
grant all privileges on testDB.* to 'myuser'@'%' identified by 'mypassword'; # 授权允许远程登录
DROP USER 'username'@'localhost'; # 删除用户
REVOKE all ON databasename.tablename FROM 'username'@'localhost'; # 撤销授权
报错处理方式
1、错误信息 1130 - Host '192.168.114.1' is not allowed to connect to this MySQL server
方法1
mysql -u root -p
use mysql; # 进入mysql数据库
update user set host = '%' where user = 'root' and host='localhost'; # 所有用户都可链接
service mysql restart # 重启mysql
2、错误信息 1045-Access denied for user 'root'@'192.168.1.13' (using password: YES)
GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION; # 执行这句允许用户远程登录
3、执行允许远程登录指令报错:ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
解决办法:set global validate_password_policy=0;
set global validate_password_length=1;
set global validate_password_mixed_case_count=2;
PS:参考网址https://www.cnblogs.com/ivictor/p/5142809.html
4、终端中需要登录mysql,此时输入mysql报错,缺少环境导致
执行命令 yum install libncurses*
5、查看mysql初始密码报错
TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details
--initialize specified but the data directory has files in it. Aborting.
停止mysql服务,删除data目录瞎所有文件,my.cnf中添加explicit_defaults_for_timestamp=true
6、ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using passwor:yes) # 密码错误,需要跳过密码验证修改密码
vim /etc/my.cnf
skip-grant-tables # [mysqld] 下面任意最后一行添加这项参数
systemctl restart mysqld
mysql
use mysql
update mysql.user set authentication_string=password('*******') where user='*******'; # 5.7版本下的mysql数据库下已经没有password这个字段了,password字段改成了authentication_string
7、ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement. # 初始化密码后登陆需要强制修改密码
ALTER USER 'root'@'localhost' IDENTIFIED BY '123' PASSWORD EXPIRE NEVER;
flush privileges;
8、SyntaxError: invalid syntax 由于用户取消而退出
1、必须修改的两个yum配置文件
因为yum使用python2,因此替换为python3后可能无法正常工作,继续使用这个python2.7.5,因此需要修改yum相关配置文件。
vi /usr/bin/yum
#!/usr/bin/python 改成 #!/usr/bin/python2.7
vi /usr/libexec/urlgrabber-ext-down
#!/usr/bin/python 改成 #!/usr/bin/python2.7
完成上面两步,现在使用yum命令基本不会出现这样的错误:SyntaxError: invalid syntax 由于用户取消而退出
更改数据库存放的目录
/usr/bin # 客户端程序和脚本
/usr/sbin mysqld # 服务
/var/lib/mysql # 日志文件,数据库文件
/usr/share/mysql # 错误消息和字符集文件
/etc/my.cnf # 配置文件
安装mysql后默认路径是在根磁盘下,由于根磁盘的空间不足,修改mysql数据库的存放路径
停止mysql服务
1、mkdir -p /home/data # 创建自定义数据库目录
2、cp -R /var/lib/mysql /home/data/ # 将整个目录复制移动到自定义目录下
3、mv /var/lib/mysql /var/lib/mysqlbak # 修改默认的目录用于备份
4、chown -R mysql:mysql /home/data/mysql # 设置目录权限
5、vim /etc/my.cnf # 配置文件中注释 datadir=/var/lib/mysql 和socket=/var/lib/mysql/mysql.sock
添加 datadir=/home/data/mysql 和 socket=/home/data/mysql/mysql.sock
6、setenforce 0 # 设置一个Selinux即可
mysql中没有password字段修改密码
update user set authentication_string=authenication_string('111111') where user='root';
修改事物等级
目录/etc/my.cnf 在【mysqld】下添加transaction-isolation=Read-Committed即可
vim /etc/my.cnf
[mysqld]下增加transaction-isolation=Read-Committed
transaction-isolation=Read-Committed
Aborted connection 35 to db: 'unconnected' user: 'ca' host: 'localhost' (init_connect command failed)
这句报错是因为没允许此用户远程登录