- 检查是否安装有MySQL数据库
- 下载MySQL官网的 yum repository
- 本地安装下载下来的rpm包
- 查看可用的安装包
- 安装mysql
- 启动mysql
- 配置数据库
- utf-8 CentOS7下让MySQL支持中文
- mysqld status mysqld dead but subsys locked">service mysqld status mysqld dead but subsys locked
ERROR 1146 (42S02): Table ‘performance_schema.session_variables’ doesn’t exist- Mysql Native table ‘performance_schema’.’session_variables’ has the wrong structure
https://www.cnblogs.com/opsprobe/p/12006492.html
https://dev.mysql.com/doc/mysql-yum-repo-quick-guide/en/
检查是否安装有MySQL数据库
rpm -qa | grep mysql
有的话,用 rpm -e 命令 或者 rpm -e —nodeps 命令卸载掉
注意:MySQL相关的安装也一并卸载干净,如:系统自带的 mysql-libs-5.1.73-8.el6_8.x86_64 都有卸载掉
rpm -e mysql # 普通删除模式
rpm -e —nodeps mysql # 强力删除模式,如果使用上面命令删除时,提示有依赖的其它文件,则用该命令可以对其进行强力删除
在删除完以后再通过 rpm -qa | grep mysql 命令来查看MySQL是否已经卸载干净!
下载MySQL官网的 yum repository
wget -c http://dev.mysql.com/get/mysql57-community-release-el6-10.noarch.rpm
本地安装下载下来的rpm包
yum localinstall mysql57-community-release-el6-10.noarch.rpm
查看可用的安装包
检查机子自带的mysql:yum list installed|grep mysql
yum repolist enabled |grep mysql
安装前装gcc所有包,防止报错
yum install gcc*
安装mysql
yum install -y mysql-community-server
安装成功.
启动mysql
service mysqld start
查看状态:
service mysqld status
加入开机启动:
chkconfig mysqld on
配置数据库
在 /etc/my.cnf 配置文件,写入以下配置:
vim /etc/my.cnf
# MySQL5.7默认对用户密码有密码强度要求,必须包含数字、小写字母、大写字母 、特殊字符,长度至少8位(关于MySQL5.7密码策略及修改技巧,可以参考这篇文章:https://www.jianshu.com/p/5779aa264840)
# 禁用密码策略(为了学习时操作方便,这里选择禁用默认密码强度策略)
validate_password = off
# validate_password_policy = 0
# 修改字符编码为utf8
character_set_server = utf8
init_connect = ‘SET NAMES utf8’
# 数据库是否区分大小写,0:区分大小写,1:不区分大小写
lower_case_table_names=1
utf-8 CentOS7下让MySQL支持中文
/etc/my.cnf
[mysqld]
port = 3306
socket = /var/lib/mysql/mysql.sock
default-storage-engine=INNODB
character-set-server=utf8
collation-server=utf8general_ci
修改完成后,_service mysql restart重启mysql服务就生效。注意:在较新版的mysq中,[mysqld]字段与[mysql]字段是有区别的。
使用SHOW VARIABLES LIKE ‘character%’;查看,发现数据库编码全已改成utf8。
4、如果上面的都修改了还乱码,那剩下问题就一定在connection连接层上。解决方法是在发送查询前执行一下下面这句(直接写在SQL文件的最前面):
SET NAMES ‘utf8’;
5、使用showcreate database数据库名;查看指定数据库的编码方式,如下:
修改指定数据库的编码:
mysql>user mydb;
mysql>alter database mydb character set utf8;
使用show create table表名;查看表的编码格式。如下:
设置默认编码为utf8:
set names utf8;
设置数据库db_name默认为utf8:
ALTER DATABASE db_name
DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
设置表tb_name默认编码为utf8:
ALTER TABLE tb_name
DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
修改字段用utf8
alter table 表名 modify 表字段名 varchar(50) CHARACTER SET utf8;
alter table tablename modify table_field_name varchar(32) CHARACTER SET utf8;
https://www.5ibc.net/centos/4142.html
保存退出!
重启数据库,让配置文件生效
service mysqld restart
查看初始密码:
grep ‘temporary password’ /var/log/mysqld.log
进入数据库,输入刚查到的初始密码,如下图所示:
mysql -u root -p
修改root账号的密码为123456
alter user ‘root’@’localhost’ identified by ‘123456’;
刷新权限
flush privileges;
service mysqld status mysqld dead but subsys locked
可能出现的错误:MySQL is unable to start.使用service…status命令检查服务状态会得出下面错误:
Debian/Ubuntu:
service mysqld status mysqld dead but subsys locked
CentOS/RHEL:
service mariadb status ERROR! MariaDB is not running, but lock file (/var/lock/subsys/mysql) exists
引起这个错误的原因:
1./var/lock/subsys/mysqld 文件已存在
ls /var/lock/subsys/mysqld /var/lock/subsys/mysqld
2.服务器内存不够了
解决方法
1.删除文件/var/lock/subsys/mysqld
2.使用free -m命令检查服务器当前内存开销情况,如果闲置内存超过200M就跳过此步
停止的服务根据实际情况来,如果你用的是apache则停止httpd,如果是nginx+php-fpm则停止相应的服务即可。
service httpd stop service nginx stop service php-fpm stop
3.启动MySQL/MariaDB服务
Debian/Ubuntu:
service mysqld start
CentOS/RHEL:
service mariadb start
4.最后启动web相关服务
同步骤2,启动对应所需要的服务即可。
service httpd start service nginx start service php-fpm start
https://towait.com/blog/mysqld-dead-but-subsys-locked/
ERROR 1146 (42S02): Table ‘performance_schema.session_variables’ doesn’t exist
mysql_upgrade -uroot -p —force
# mysql_upgrade -uroot -p —force —skip-version-check
Mysql Native table ‘performance_schema’.’session_variables’ has the wrong structure
set @@global.show_compatibility_56=ON;