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/sbin | mysqld 服务器 |
/var/lib/mysql | 日志文件、socket 文件和数据库 |
/usr/share/info | 信息格式的手册 |
/usr/share/man | UNIX 帮助页 |
/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
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)