- 关闭MySQL服务
- 进入配置文件找到my.cnf;在my.cnf中找到以下片段[mysqld];另起一行加入代码:skip-grant-tables 并保存
- 启动服务进入MySQL,插入root用户insert into user (Host,User,Password,ssl_cipher,x509_issuer,x509_subject) values('localhost','root',password('123'),'','','');
并赋予权限update user set Host='localhost',select_priv='y', insert_priv='y',update_priv='y',Alter_priv='y',delete_priv='y',create_priv='y',drop_priv='y',reload_priv='y',shutdown_priv='y',Process_priv='y',file_priv='y',grant_priv='y',References_priv='y',index_priv='y',create_user_priv='y',show_db_priv='y',super_priv='y',create_tmp_table_priv='y',Lock_tables_priv='y',execute_priv='y',repl_slave_priv='y',repl_client_priv='y',create_view_priv='y',show_view_priv='y',create_routine_priv='y',alter_routine_priv='y',create_user_priv='y' where user='root';commit;并刷新
4.删除之前配置文件插入内容
5.重启服务
service mysqld restart
源码安装
一.数据库的种类:
1.关系型数据库(RDBMS):
MySQL,Oracle,MSSQL(SQLserver)
2.非关系型数据库(NoSQL):
Redis,Memcache,MongoDB,elasticsearch
ELK:日志收集
E:elasticsearch
L:logstash
K:Kibana
二.MySQL的版本选择潜规则:
https://www.mysql.com/
MySQL5.6:
1.选择GA 6-12个月
2.小版本号为偶数版
MySQL5.7
1.选择GA 6-12个月
2.小版本号为偶数版
3.MySQL5.7.17以上版本 MGR
三.MySQL源码安装
1.解压
[root@db01 ~]# tar xf mysql-5.6.40.tar.gz
2.进入目录
[root@db01 ~]# cd mysql-5.6.40
[root@db01 mysql-5.6.40]# ll
3.生成编译文件
cmake . -DCMAKE_INSTALL_PREFIX=/application/mysql-5.6.38
#数据存放位置
-DMYSQL_DATADIR=/application/mysql-5.6.38/data
#socket文件存放位置
-DMYSQL_UNIX_ADDR=/application/mysql-5.6.38/tmp/mysql.sock
#使用utf8字符集
-DDEFAULT_CHARSET=utf8
#校验规则
-DDEFAULT_COLLATION=utf8_general_ci
#使用其他额外的字符集
-DWITH_EXTRA_CHARSETS=all
#支持的存储引擎
-DWITH_INNOBASE_STORAGE_ENGINE=1
-DWITH_FEDERATED_STORAGE_ENGINE=1
-DWITH_BLACKHOLE_STORAGE_ENGINE=1
#禁用的存储引擎
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1
#启用zlib库支持(zib、gzib相关)
-DWITH_ZLIB=bundled
#启用SSL库支持(安全套接层)
-DWITH_SSL=bundled
#启用本地数据导入支持
-DENABLED_LOCAL_INFILE=1
#编译嵌入式服务器支持
-DWITH_EMBEDDED_SERVER=1
# mysql5.6支持了google的c++mock框架了,允许下载,否则会安装报错。
-DENABLE_DOWNLOADS=1
#禁用debug(默认为禁用)
-DWITH_DEBUG=0
4.编译
make
5.安装
make install
cd /usr/local/mysql-5.6.40/
7.创建mysql系统用户
[root@db01 mysql-5.6.40]# useradd mysql -s /sbin/nologin -M
8.进入配置文件及脚本目录
[root@db02 mysql-5.6.40]# cd support-files/
9.拷贝配置文件到etc
[root@db01 support-files]# cp my-default.cnf /etc/my.cnf
cp: overwrite ‘/etc/my.cnf’? y
10.拷贝启动脚本
[root@db01 support-files]# cp mysql.server /etc/init.d/mysqld
11.进入初始化目录
[root@db01 mysql-5.6.40]# cd /usr/local/mysql-5.6.40/scripts/
mkdir /usr/local/mysql-5.6.40/tmp
chown -R mysql.mysql /usr/local/mysql*
12.初始化数据库
[root@db01 scripts]# ./mysql_install_db --user=mysql --basedir=/usr/local/mysql-5.6.40 --datadir=/usr/local/mysql-5.6.40/data
13.做软连接
[root@db02 scripts]# ln -s /usr/local/mysql-5.6.40 /usr/local/mysql
14.启动mysql
[root@db02 scripts]# /etc/init.d/mysqld start
Starting MySQL.Logging to '/usr/local/mysql/data/db02.err'.
. SUCCESS!
15.添加环境变量
[root@db02 scripts]# vim /etc/profile
export PATH="/usr/local/mysql/bin:$PATH"
16.加载环境变量
[root@db02 scripts]# source /etc/profile
17.授权
[root@db01 scripts]# chown -R mysql.mysql /usr/local/mysql*
18.连接mysql
[root@db02 scripts]# mysql
19.设置mysql密码
[root@db02 scripts]# mysqladmin -uroot -p password 123
20.连接mysql
[root@db01 scripts]# mysql -uroot -p123
二进制安装
压缩包放进去后解压
mv mysql-5.6.40-linux-glibc2.12-x86_64 /usr/local/mysql-5.6.40
6.进入mysql程序目录
[root@db02 ~]# cd /usr/local/mysql-5.6.40/
7.创建mysql系统用户
[root@db01 mysql-5.6.40]# useradd mysql -s /sbin/nologin -M
8.进入配置文件及脚本目录
[root@db02 mysql-5.6.40]# cd support-files/
9.拷贝配置文件到etc
[root@db01 support-files]# cp my-default.cnf /etc/my.cnf
cp: overwrite ‘/etc/my.cnf’? y
10.拷贝启动脚本
[root@db01 support-files]# cp mysql.server /etc/init.d/mysqld
11.进入初始化目录
[root@db01 mysql-5.6.40]# cd /usr/local/mysql-5.6.40/scripts/
12.初始化数据库
[root@db01 scripts]# ./mysql_install_db --user=mysql --basedir=/usr/local/mysql-5.6.40 --datadir=/usr/local/mysql-5.6.40/data
13.做软连接
[root@db02 scripts]# ln -s /usr/local/mysql-5.6.40 /usr/local/mysql
14.启动mysql
[root@db02 scripts]# /etc/init.d/mysqld start
Starting MySQL.Logging to '/usr/local/mysql/data/db02.err'.
. SUCCESS!
15.添加环境变量
[root@db02 scripts]# vim /etc/profile
export PATH="/usr/local/mysql/bin:$PATH"
16.加载环境变量
[root@db02 scripts]# source /etc/profile
17.授权
[root@db01 scripts]# chown -R mysql.mysql /usr/local/mysql*
18.连接mysql
[root@db02 scripts]# mysql
19.设置mysql密码
[root@db02 scripts]# mysqladmin -uroot -p password 123
20.连接mysql
[root@db01 scripts]# mysql -uroot -p123
四.mysql基础优化:
1.删除 没有用的库
mysql> show databases;
mysql> drop database test;
Query OK, 0 rows affected (0.00 sec)
2.删除没有用的用户
mysql> select user,host from mysql.user;
mysql> drop user root@'::1';
Query OK, 0 rows affected (0.00 sec)
mysql> delete from mysql.user where user='root' and host='db01';
关闭防火墙
systemctl disable firewalld
setenforce 0
vim /etc/sysconfig/selinux
sed命令
1、查看mysql版本
方法一:status;
方法二:select version();
2、Mysql启动、停止、重启常用命令
a、启动方式
1、使用 service 启动:
[root@localhost /]# service mysqld start (5.0版本是mysqld)
[root@szxdb etc]# service mysql start (5.5.7版本是mysql)
2、使用 mysqld 脚本启动:
/etc/inint.d/mysqld start
3、使用 safe_mysqld 启动:
safe_mysqld&
b、停止
1、使用 service 启动:
service mysqld stop
2、使用 mysqld 脚本启动:
/etc/inint.d/mysqld stop
3、mysqladmin shutdown
c、重启
1、使用 service 启动:
service mysqld restart
service mysql restart (5.5.7版本命令)
2、使用 mysqld 脚本启动:
/etc/init.d/mysqld restart
查看mysql服务
netstat -lntup |grep 3306
报错处理
The server quit without updating PID file
1、可能是/usr/local/mysql/data/mysql.pid文件没有写的权限
解决方法 :给予权限,执行 “chown -R mysql:mysql /var/data” “chmod -R 755 /usr/local/mysql/data” 然后重新启动mysqld!
2、可能进程里已经存在mysql进程
解决方法:用命令“ps -ef|grep mysqld”查看是否有mysqld进程,如果有使用“kill -9 进程号”杀死,然后重新启动mysqld!
3、可能是第二次在机器上安装mysql,有残余数据影响了服务的启动。
解决方法:去mysql的数据目录/data看看,如果存在mysql-bin.index,就赶快把它删除掉吧,它就是罪魁祸首了。本人就是使用第三条方法解决的 !
4、mysql在启动时没有指定配置文件时会使用/etc/my.cnf配置文件,请打开这个文件查看在[mysqld]节下有没有指定数据目录(datadir)。
解决方法:请在[mysqld]下设置这一行:datadir = /usr/local/mysql/data
5、skip-federated字段问题
解决方法:检查一下/etc/my.cnf文件中有没有没被注释掉的skip-federated字段,如果有就立即注释掉吧。
6、错误日志目录不存在
解决方法:使用“chown” “chmod”命令赋予mysql所有者及权限
7、selinux惹的祸,如果是centos系统,默认会开启selinux
解决方法:关闭它,打开/etc/selinux/config,把SELINUX=enforcing改为SELINUX=disabled后存盘退出重启机器试试
自己解决办法
1.mysql在启动时没有指定配置文件时会使用/etc/my.cnf配置文件,请打开这个文件查看在[mysqld]节下有没有指定数据目录(datadir)。
解决方法:请在[mysqld]下设置这一行:datadir = /usr/local/mysql/data
3.查看相关进程
3.kill -9 所有有关进程