1、下载
下载地址:http://dev.mysql.com/downloads/mysql/5.6.html#downloads
下载版本:这里选择的5.6.33,通用版,linux下64位
也可以直接复制64位的下载地址,通过命令下载:wget http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.33-linux-glibc2.5-x86_64.tar.gz
2、解压
#解压
tar -zxvf mysql-5.6.33-linux-glibc2.5-x86_64.tar.gz
#复制解压后的mysql目录
cp -r mysql-5.6.33-linux-glibc2.5-x86_64 /usr/local/mysql
3、添加用户组和用户
#添加用户组
groupadd mysql
#添加用户mysql 到用户组mysql
useradd -g mysql mysql
4、安装
cd /usr/local/mysql/
mkdir ./data/mysql
chown -R mysql:mysql ./
./scripts/mysql_install_db --user=mysql --datadir=/usr/local/mysql/data/mysql
cp support-files/mysql.server /etc/init.d/mysqld
chmod 755 /etc/init.d/mysqld
cp support-files/my-default.cnf /etc/my.cnf
#修改启动脚本
vi /etc/init.d/mysqld
#修改项:
basedir=/usr/local/mysql/
datadir=/usr/local/mysql/data/mysql
#启动服务
service mysqld start
#测试连接
./mysql/bin/mysql -uroot
#加入环境变量,编辑 /etc/profile,这样可以在任何地方用mysql命令了
export PATH=$PATH:/usr/local/mysql//bin
source /etc/profile
#启动mysql
service mysqld start
#关闭mysql
service mysqld stop
#查看运行状态
service mysqld status
5、错误
5.1 sqlyog连接时,报1130错误,是由于没有给远程连接的用户权限问题
解决1:更改 ‘mysql’数据库‘user’表‘host’项,从‘localhost’改成‘%’。(会导致root在服务器本地登陆失败)
use mysql;
select 'host' from user where user='root';
update user set host = '%' where user ='root';
flush privileges;
解决2:直接给某个用户进行授权:(此处给mysql授权)
GRANT ALL PRIVILEGES ON *.* TO 'mysql'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
5.2 安装时的一些错误
-bash: ./scripts/mysql_install_db: /usr/bin/perl: bad interpreter: 没有那个文件或目录
解决: yum -y install perl perl-devel
Installing MySQL system tables..../bin/mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
解决:yum -y install libaio-devel
6、其他
6.1 配置环境变量
vim /etc/profile
#mysql
export PATH=$PATH:/usr/local/mysql/bin
source /etc/profile
1、chmod a+x /etc/init.d/mysqld
通过该脚本对mysql服务进行测试,命令如下:
service mysqld start //启动service mysqld stop //停止
2.将mysql服务加入chkconfig管理列表,命令如下:
chkconfig --add mysqld
3.设置终端模式开机启动,命令如下:
chkconfig mysqld on
5.shutdown -r now 重启电脑
6.netstat -na | grep 3306,如果看到有监听说明服务启动了
数据库重置密码
如果MySQL数据库用户的密码设置过于简单,数据库在用户登录后会提示重置密码,并且不接受简单的密码。
提示需要重置密码:
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
Mysql数据库版本:5.7.1
操作系统:CentOS 7
这个问题是否奇怪,因为明明是刚刚用密码登录了mysql服务器。怎么要重置密码呢?因为密码太简单了,不符合MySQL的安全要求。
参考官方的文档,见http://dev.mysql.com/doc/refman/5.6/en/alter-user.html。重置用户密码操作:
mysql> SET PASSWORD = PASSWORD('123456'); //123456 是重置的新密码
以上操作后又遇到新问题:
ERROR 1819 (HY000): Your password does NOT satisfy the CURRENT policy requirements。
又参考了官方文档,见http://dev.mysql.com/doc/refman/5.7/en/validate-password-plugin.html。
应该是密码过于简单了。 后来用大写字母+数字+特殊字符混合了一个密码。重置密码成功!
以后操作,没有再出现上述问题。
注意:如果只想设置简单密码需要修改两个全局参数:
mysql> set global validate_password_policy=0;
mysql> set global validate_password_length=1;
远程连接:
1.设置root可以远程连接
(会导致本地服务root用户登陆不上)
update `user` set Host = '%' where User = 'root' and Host = 'localhost';
flush privileges; 或者重启服务 sudo service mysqld restart
2.设置一个账户可以远程连接
1)新建用户imooc,密码为123456
CREATE USER 'imooc'@'%' IDENTIFIED BY '123456';
2)赋予权限
GRANT ALL PRIVILEGES ON *.* TO 'imooc'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
GRANT select,insert,update,delete ON *.* TO 'imooc'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
FLUSH PRIVILEGES;
3)收回权限
REVOKE ALL PRIVILEGES ON *.* FROM imooc;
FLUSH PRIVILEGES;
忘记root 密码
在 /etc/my.cnf 加入 skip-grant-tables
use mysql;
update user set authentication_string=password('456789') where user='root';
MySQL开启general_log跟踪数据执行过程
# 设置general log保存路径
# 注意在Linux中只能设置到 /tmp 或 /var 文件夹下,设置其他路径出错
# 需要root用户才有访问此文件的权限
mysql> set global general_log_file='/tmp/general.log';
# 开启general log模式
mysql> set global general_log=on;
# 关闭general log模式
mysql>set global general_log=off;
在general log模式开启过程中,所有对数据库的操作都将被记录 general.log 文件