主配置文件 /etc/my.cnf
数据库目录 /var/lib/mysql (rpm安装) /usr/local/mysql/data(源码安装)
服务的进程名/端口 mysqld/3306
进程所有者和所属组 mysql/mysql
数据传输协议 tcp
错误日志文件名 /var/log/mysqld.log
system 系统命令: 在mysql里使用系统命令
编译安装
yum -y install gcc gcc-c++ ncurses ncurses-devel bison cmake
tar xf mysql-boost-5.7.20.tar.gz #mysql boost联合包
cd /opt/mysql-5.7.20/
cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
-DSYSCONFDIR=/etc \
-DSYSTEMD_PID_DIR=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DWITH_BOOST=boost \
-DWITH_SYSTEMD=1
**注意:** 如果在CMAKE的过程中有报错,当报错解决后,需要把源码目录中的CMakeCache.txt文件删除,然后再重新CMAKE,否则错误依旧。
make -j 2
make install
useradd -M -s /sbin/nologin mysql
chown -R mysql:mysql /usr/local/mysql/
chown mysql:mysql /etc/my.cnf
vim /etc/my.cnf
[client]
port = 3306
socket=/usr/local/mysql/mysql.sock
[mysqld]
user = mysql
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
port = 3306
character-set-server=utf8
pid-file = /usr/local/mysql/mysqld.pid
socket=/usr/local/mysql/mysql.sock
bind-address = 0.0.0.0
skip-name-resolve
max_connections=2048
default-storage-engine=INNODB
max_allowed_packet=16M
server-id = 1
echo 'export PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile
source /etc/profile //刷新文件使之立即生效
cd /usr/local/mysql/bin/
./mysqld \
--initialize-insecure \ #生成初始化密码为空
--user=mysql \ #指定管理用户
--basedir=/usr/local/mysql \ #指定数据库的安装目录
--datadir=/usr/local/mysql/data #指定数据库文件的存储路径
cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/
systemctl daemon-reload
systemctl enable --now mysqld
mysqladmin -uroot -p password '新密码'
回车
或者
mysql 直接登陆
UPDATE mysql.user SET AUTHENTICATION_STRING = PASSWORD('123456') where user='root';
flush privileges
数据库目录 /usr/local/mysql
yum安装5.7版本
tee /etc/yum.repos.d/mysql.repo <<EOF
[mysql57-community]
name=MySQL 5.7 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/7/x86_64/
enabled=1
gpgcheck=0
EOF
yum -y install mysql-community-server
systemctl start mysqld
grep password /var/log/mysqld.log
mysql -u root -p'密文密码'
alter user root@'localhost' identified by '123123';
set password = password('123456');
数据库目录:/var/lib/mysql
修改数据库服务器的密码策略(设置密码的复杂度)
show variables like "%password%"; #查看与密码相关的配置项
mysql> set global varidate_password_policy=0; # 修改密码等级为0
mysql> set global validate_password_length=6; # 修改密码长度为6
临时有效
# 永久有效需要修改配置文件
[root@host50 ~]# vim /etc/my.cnf
[mysqld] # 在这一行下面添加两句话
validate_password_policy=0 # 修改密码等级为0
validate_password_length=6 # 修改密码长度为6
[root@host50 ~]# systemctl restart mysqld 重启服务即生效
MySQL数据库字符集设置
(1)编辑vim/etc/my.cnf配置文件,在相应段中加入相应的参数字符集,修改完毕后,重启MySQL服务即可,具体内容如下:
[client]字段里加入:default-character-set=utf8。
[mysqld]字段里加入:character-set-server=utf8。
[mysql]字段里加入:default-character-set=utf8。
(2)
set character-set_client=utf8
set character-set_result=utf8
set character-set_connection=utf8
show charset;
#查看支持字符集
show create table 库.表 \G
查看当前库表字符集
mysql查看版本号
登录时候可以查看或者使用命令select version();
系统 mysql -V
mysql中一些重要的参数
最大连接数,响应的连接数,索引缓冲区的大小,等待行动的秒数,表高速缓存的大小,允许的同时客 户的数量,为所有线程打开表的数量,服务器在关闭它之前在一个连接上等待行动的秒数
新建用户
CREATE USER '用户名'@'来源地址' [IDENTIFIED BY [PASSWORD] '密码'];
'用户名': 指定将创建的用户名。
'来源地址': 指定新创建的用户可在哪些主机上登录,可使用IP地址、网段、主机名的形式,本地用户可用localhost, 允许任意主机登录可用通配符%
'密码':
- 若使用明文密码,直接输入'密码',插入到数据库时由Mysql自动加密;
- 若使用加密密码,需要先使用
SELECT PASSWORD('密码');
获取密文,再在语句中添加PASSWORD '密文';
SELECT PASSWORD('123456'); #先获取密文
CREATE USER 'lisi'@'localhost' IDENTIFIED BY PASSWORD '密文';
- 若省略"IDENTIFIED BY" 部分,则用户的密码将为空(不建议使用)
删除用户信息
DROP USER 'lisi'@'localhost';
查看用户表
创建后的用户保存在 mysql 数据库的 user 表里。
USE mysql; #切换到mysql库
SELECT User,authentication_string,Host from user; #查看user表中的用户信息
修改用户名称
格式:
rename user '旧名字' to '新名字;
例:
rename user 'zhangsan'@'192.168.91.%' to 'lisi'@'192.168.91.%';
修改root密码
-
mysqladmin修改 (操作系统管理员 修改本机 数据库服务的登陆密码)
-
]# mysqladmin -uroot -p旧密码 password 新密码
隐藏旧密码和新密码,根据提示输入密码
]# mysqladmin -uroot -p password
第一次提示 输入旧密码
第二次提示 输入新密码 (新密码 要服务密码策略要求)
-
在数据库使用alter user里修改密码
alter user root@"localhost" identified by "密码";
修改当前登录用户的密码
set password = password('123456');
修改其他用户的密码
set password for 'nancy'@'localhost' = password('abc123');
忘记root用户密码的解决办法
1、#修改配置文件/etc/my.cnf,不使用密码直接登录到mysql。
vim /etc/my.cnf
[mysqld]
skip-grant-tables #添加此行,使登录mysql不使用授权表
skip-networking #MySQL8.0不需要
service mysqld restart #重启服务
mysql #直接登录,无需密码
2、#使用update命令修改root密码,刷新数据库。
mysql> UPDATE mysql.user SET AUTHENTICATION_STRING = PASSWORD('123456') where user='root';
mysql> flush privileges; #刷新数据库
mysql> quit #退出
mysql -uroot -p123456 #免交互登录的话,"-p密码"不能有空格
3、#删除配置文件中的配置,之后重启服务。
注意:最后再把/etc/my.conf 配置文件里的skip-grant-tables 删除,并重启mysql服务。
vim /etc/my.cnf
service mysqld restart
破解线上数据库服务器管理员root 密码
不用重启服务
- 拷贝其他数据库服务器 管理员root用户能正常连接数据库服务的mysql库 覆盖本机的mysql库 !!!!mysql库存放的是 数据库服务器的用户和密码!!!
- 查看mysql服务 父进程的pid
- 给mysql服务的父进程发送 SIGHUP信息 (作用重新加载数据库目录下的文件 ,可以重新识别mysql库里的用户和密码)
- 使用破解后的密码登录(密码和root用户能正常登录服务主机的的root密码一样)
# 将知道密码的数据库mysql目录发给不知道密码的数据库
[root@host50 ~]# scp -r 192.168.4.51:/var/lib/mysql/mysql /var/lib/mysql/
[root@host50 ~]# pstree -p | grep mysqld | head -1
[root@host50 ~]# kill -SIGHUP 1603
[root@host50 ~]# mysql -hlocalhost -uroot -pNSD2021...a
远程连接mysql
mysql -u 用户名 -p[密码] -h 目标IP/主机名 -P 端口号
用户授权
#授予用户权限
grant 权限列表/ALL ON 库名.表名 to 'username'@'address' [identified by 'XXXXX'];
show grants; #查看当前用户(自己)的权限
show grants for 'username'@'address'; #查看其他用户的权限
revoke 权限列表/ALL on 库名.表名 from 'username'@'address'; #撤销用户的权限
查看当前登录用户
select user (); #查看当前登录用户和来源地址