mysql的安装:https://dev.mysql.com/doc/refman/5.7/en/linux-installation.html 参考手册
下载安装包:
mkdir -p /usr/local/mysql
cd /usr/local/mysql
tar -zxvf mysql-5.7.17-linux-glibc2.5-x86_64.tar.gz
mv mysql-5.7.17-linux-glibc2.5-x86_64/* /usr/local/mysql
groupadd mysql
useradd -r -g mysql -s /bin/false mysql
####useradd -r参数表示mysql用户是系统用户,不可用于登录系统
chown -R mysql:mysql /usr/local/mysql
mkdir -p /home/mysql/mysql3306/data
cd /home/mysql/mysql3306
mkdir -p logs
mkdir -p data
mkdir -p binlog
mkdir tmp
vi /etc/security/limits.conf
mysql soft nproc 2047
mysql hard nproc 16384
mysql soft nofile 1024
mysql hard nofile 65536
检测冲突:
rpm -qa |grep mariadb
rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64
rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64
rpm -e --nodeps mariadb-devel-5.5.56-2.el7.x86_64
rpm -e --nodeps mariadb-5.5.56-2.el7.x86_64
cp ./support-files/my-default.cnf /etc/my.cnf 如果有:
编辑my.cnf,无此文件创建:(自定义设置)
一般配置选项
[mysqld]
basedir = /usr/local/mysql
datadir = /home/mysql/mysql3306/data
port = 3306
socket = /tmp/mysql.sock
character-set-server=utf8
初始化:(我们使用5.7版本)如果不是默认的路径,请使用初始参数,初始化
mysqld --defaults-file=/usr/local/mysql/my.cnf --initialize --user=mysql
mysql 5.7
mysqld --initialize --user=mysql --basedir={path}--datadir={datapath}
mysqld --defaults-file=/usr/local/mysql/my.cnf --initialize --user=mysql
mysql 5.6
mysql_install_db --defaults-file=my.cnf --user=mysql --basedir={path}
error.log 里记录生成的密码
记住生成的密码:ho6>/ykSuqkJ
安装:使用ssl
./bin/mysql_ssl_rsa_setup --datadir=/home/mysql/mysql3306/data
设置开机启动:(使用默认目录的情况)
cd /usr/local/mysql/support-files
cp mysql.server /etc/init.d/mysqld
更改mysqld 中datadir 路径
chkconfig --list | grep mysqld
chkconfig --add mysqld
启动数据库:
service mysqld start
启动数据库(手工启动) 参数文件如果不指定,查找路径(/etc/my.cnf /etc/mysql.cnf /usr/local/mysql/etc/my.cnf ~/.my.cnf)
mysqld --defaults-file=/etc/my.cnf &
mysqld_safe --defaults-file=/usr/local/mysql/my.cnf &
停止数据库(手工停止) 非默认位置的sock,登录时请指定sock文件
mysqladmin -uroot -pgzjpm0330 shutdown S /u01/mysql3306/data/mysql.sock
使用初始密码;登录:
mysql -uroot -p(登录密码为初始化的时候显示的临时密码)
mysql -uroot -p
设置新密码:(必须设置新密码后才能使用)
SET PASSWORD = PASSWORD('root');
此时mysql只有本地localhost可以访问
mysql -uroot -proot 使用新密码登录
修改可远程访问:
grant all privileges on *.* to'root' @'%' identified by 'root';
创建库及用户及授权:
mysql> show databases;
mysql> create database abc;
mysql> drop database abc;
mysql> use extmail; ==> 选择数据库
mysql> select database(); ==> 查看当前选择的数据库
mysql> show tables; ==> 查看当前数据库中的表
mysql>create user 'yao'@'localhost' identified by 'zll4859291'; ==>只能本地登录
mysql>CREATE USER 'yao'@'192.168.1.%' IDENDIFIED BY '123456'; ==>只能192.168.1网段的登录
mysql>CREATE USER 'yao'@'%' IDENTIFIED BY '123456'; ==>无限制网段的登录
mysql>grant all on abc.* to 'yao'@'%'; ==> 授权用户yao访问abc库所有的对象
mysql> grant select on mysql.* to 'yao'@'%' identified by '123456'; 创建用户yao无限制网络登录并授权访问mysql库所有的对象
创建表及授权:8.0 版本不允许授权创建用户,8.0版本不允许通过修改mysql.user 表来更新密码,修改成功但无法登录
create user 'admin'@'%' identified by 'admin';
create user 'xtrabk'@'localhost' identified by 'xtrabk';
更改用户密码:(4种方式)
1、set password for root@localhost = password('123');
2、mysqladmin -u用户名 -p旧密码 password 新密码
mysqladmin -uroot -p123456 password 123
3、use mysql;
update user set authentication_string=password('123') where user='root' and host='localhost';
flush privileges;
4、ALTER USER 'root'@'localhost' identified by 'root'; ---8.0.* 后的版本取消了password函数
SET PASSWORD = 'root';
忘记root密码:
my.cnf
配置文件mysqld 中添加--skip-grant-tables
重启数据库。
直接mysql进入命令行:
采用上面的第3种方式更改密码。如何去掉--skip-grant-tables ,重启数据库即可。
mysql 8.0 中如果使用更新mysql.user 表的方式更新密码,在用其他方式更改密码会提示失败,必须清空mysql.user 表里authentication_string 字段的内容,才可以重新设置密码