Centos7完全卸载MySQL & 安装 & 启动

Centos7完全卸载MySQL & 安装 & 启动,第1张

Centos7完全卸载MySQL & 安装 & 启动 卸载篇

1、查看mysql安装了哪些东西

rpm -qa |grep -i mysql

2、开始卸载,对安装的XXX依次执行:

yum remove XXX

3、查看是否卸载完成

rpm -qa |grep -i mysql

4、找mysql相关目录

find / -name mysql

5、对安装的所有XXX目录进行删除 *** 作

rm -rf XXX

6、删除/etc/my.cnf

rm -rf /etc/my.cnf

7、删除/var/log/mysqld.log(如果不删除这个文件,会导致新安装的mysql无法生存新密码,会出现无法登陆的情况)

rm -rf /var/log/mysqld.log
安装篇

1、下载并安装mysql源安装包

# 下载
wget http://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm 
# 安装mysql源 
yum localinstall mysql57-community-release-el7-11.noarch.rpm

2、检查mysql源是否安装成功

yum repolist enabled | grep "mysql.*-community.*"

3、安装MySQL

yum install -y mysql-community-server

如果出现错误:Error: Unable to find a match: mysql-community-server,则进行下面 *** 作:(我也不知道原理)

# 先尝试运行 
yum module disable mysql
# 然后在尝试下面命令即可
yum install mysql-community-server 
启动篇

1、在 CentOS 7 下,新的启动/关闭服务的命令是 systemctl start|stop

systemctl start mysqld

2、用 systemctl status 查看 MySQL 状态

systemctl status mysqld

3、设置开机启动

systemctl enable mysqld重载所有修改过的配置文件
# 重载所有修改过的配置文件
systemctl daemon-reload

4、获取root登陆密码

mysql安装完成之后,在/var/log/mysqld.log文件中给root生成了一个默认密码。通过下面的方式找到root默认密码,然后登录mysql进行修改:

grep 'temporary password' /var/log/mysqld.log

ps:如果没有返回,找不到root密码,解决方案:

# 1删除原来安装过的mysql残留的数据(这一步非常重要,问题就出在这)
rm -rf /var/lib/mysql
# 2重启mysqld服务
systemctl restart mysqld
# 3再去找临时密码
grep 'temporary password' /var/log/mysqld.log

5、登陆并修改 root 本地账户密码

# 登录
mysql -uroot -p
# 接下来输入临时密码即可登录
# 修改密码,我这里将密码修改为`ClimberCoding66!`
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'ClimberCoding66!'; 

注意:mysql 5.7 默认安装了密码安全检查插件(validate_password),默认密码检查策略要求密码必须包含:大小写字母、数字和特殊符号,并且长度不能少于8位。否则会提示 ERROR 1819 (HY000): Your password does not satisfy the current policy requirements 错误

以后通过 update set 语句修改密码

mysql> use mysql;
mysql> update user set password=PASSWORD('ClimberCoding77!') where user='root';
mysql> flush privileges;	# 刷新权限

6、添加远程登录用户

默认只允许root帐户在本地登录,如果要在其它机器上连接mysql,必须添加一个允许远程连接的帐户

GRANT ALL PRIVILEGES ON *.* TO 'Climber'@'%' IDENTIFIED BY 'Climber2020!' WITH GRANT OPTION;

7、设置默认编码为utf8

mysql 安装后默认不支持中文,需要修改编码。
修改 /etc/my.cnf 配置文件,在相关节点(没有则自行添加)下添加编码配置,如下:

[mysqld]
character-set-server=utf8
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8

8、重启mysql服务,查询编码。可以看到已经改过来了

shell> systemctl restart mysqld
shell> mysql -uroot -p
mysql> show variables like 'character%';

补充1:

使用 RPM 包安装时,系统不会提示各种文件安装在哪个文件夹下。下面介绍每个主要的文件在什么目录下,MySQL 服务器目录以及子目录如下表所示:

文件夹文件夹内容
/usr/bin客户端和脚本(mysqladmin、mysqldump 等命令)
/usr/sbinmysqld 服务器
/var/lib/mysql日志文件、socket 文件和数据库
/usr/share/info信息格式的手册
/usr/share/manUNIX 帮助页
/usr/include/mysql头文件
/usr/lib/mysql
/usr/share/mysql错误消息、字符集、安装文件和配置文件等
/etc/rc.d/init.d/启动脚本文件的 mysql 目录,可以用来启动和停止 MySQL 服务

步骤 7):配置 MySQL 服务,将 /usr/share/mysql/ 或 /usr/share/ 文件夹下的某一个后缀名为 cnf 的文件拷贝到 /etc/ 文件夹下,并且改名为 my.cnf。使用 vi 编辑器来编辑 my.cnf(我们在《my.cnf配置文件详解》一节介绍了 my.cnf 配置文件中各参数的具体意义)。命令如下:

cp /usr/share/mysql/my-large.cnf /etc/my.cnf
vi /etc/my.cnf

第一行命令可以完成复制和改名的工作,第二行命令可以编辑 my.cnf。

注意:使用 vi 进入 my.cnf 文件后,按 i 或 a 键进行编辑。按 Esc 键就可以退出编辑状态,转为进入命令状态。如果要保存修改的数据,输入:w即可,如果不希望保存而直接退出,输入:q!即可。

编辑并保存 my.cnf 文件后,必须重新启动 MySQL 服务,这样 my.cnf 中的配置才会起作用。

补充2:

修改密码策略

在/etc/my.cnf文件添加validate_password_policy配置,指定密码策略

# 0(LOW):验证 Length
# 1(MEDIUM):验证 Length; numeric, lowercase/uppercase, and special characters
# 2(STRONG):验证 Length; numeric, lowercase/uppercase, and special characters; dictionary file
validate_password_policy=0

当然如果不需要密码策略,可以禁用:
在/etc/my.cnf文件添加

validate_password = off

重启生效:

systemctl restart mysqld

Mysql的root用户,只能本地访问,这里在创建一个远程可以访问的 用户。

 GRANT ALL PRIVILEGES ON *.* TO 'its'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
10、忽略大小写

登陆mysql查看

mysql> show variables like "%case%";
+------------------------+-------+
| Variable_name          | Value |
+------------------------+-------+
| lower_case_file_system | OFF   |
| lower_case_table_names | 0     |  ##0区分 1 不区分
+------------------------+-------+
2 rows in set (0.00 sec)

修改配置文件 /etc/my.cnf 添加:

# 0:区分大小写,1:不区分大小写
lower_case_table_names =1

重启后生效:

systemctl restart mysqld
11、用户权限

数据库迁移到新的服务器上,执行存储过程时出现了如下问题:

execute command denied to user ‘用户名’@’%’ for routine ‘函数名称’

后来一查原来是权限问题,只要用下面的语句改一下相应用户的权限就可以了:

GRANT ALL PRIVILEGES ON *.* TO ‘用户名’@’%’ ;
FLUSH PRIVILEGES;

相应的撤消权限命令:

REVOKE ALL PRIVILEGES ON *.* FROM  ‘用户名’@’%’ ;
FLUSH PRIVILEGES;
12、跑脚本的时候: ERROR 1067 (42000): Invalid default value for 'FAILD_TIME' (对TIMESTAMP 类型的子段如果不设置缺省值或没有标志not null时候在创建表时会报这个错误)
这是因为sql_mode中的NO_ZEROR_DATE导制的,在strict mode中不允许’0000-00-00’作为合法日期

使用下面的命令查看sql_mode

mysql>show variables like 'sql_mode';

+---------------+-------------------------------------------------------------------------------------------------------------------------------------------+
| Variable_name | Value                                                                                                                                     |
+---------------+-------------------------------------------------------------------------------------------------------------------------------------------+
| sql_mode      | ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
+---------------+-------------------------------------------------------------------------------------------------------------------------------------------+

将上面的NO_ZERO_DATE改为下面的ALLOW_INVALID_DATES

mysql> set sql_mode='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,ALLOW_INVALID_DATES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';

上面的设置是临时设置,在重新登陆后,该设置又恢复为NO_ZERO_DATE

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/996420.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存