跳至主要內容

mysql

wangdx大约 5 分钟

网址参考

MySQL 查询数据库中表名、表注释、字段名、字段类型、字段注释open in new window

mysql 中将查询结果进行拼接处理及 concat、group_concat 的使用open in new window

解决 mysql 允许执行 XA RECOVER 语句(atomikos 解决分布式事务报错)open in new window

MySQL 权限介绍)open in new window

Mysql 查看连接数(连接总数、活跃数、最大并发数)open in new window

linux 安装多版本MySQLopen in new window

MySQL8初始化、账户创建及权限分配open in new window

mysql8 安装配置


 /usr/local/mysql/mysql8/bin/mysqld --defaults-file=/usr/local/mysql/mysql8/my.cnf --user=mysql --initialize --console 

#【本地系统】将 MySQL开发包上传到 Linux 系统之中,保存路径“/srv/ftp”,此时的完整路径:
/srv/ftp/mysq1-8.0.30-linux-glibc2.12-x86 64.tar.xz
#2【UBuntu 系统】当前的 MySQL 采用的是 XZ 压缩包的形式保存的,所以首先需要进行解压缩处理,解压缩为 tar 文件。
#程序执行结果:得到“mysql-8.0.36-linux-glibc2.28-x86_64.tar”文件
xz -d mysql-8.0.36-linux-glibc2.28-x86_64.tar.xz
#【UBuntu 系统】将 mysql-8.0.36-linux-glibc2.28-x86_64.tar 文件解压缩到“/usr/local”目录之中:
tar xvf /srv/ftp/mysql-8.0.30-linux-glibc2.12-x86_64.tar -C /usr/local/
#【UBuntu 系统】为了后续的配置方便进行目录更名处理:
mv /usr/local/mysql-8.0.30-linux-glibc2.12-x86/ /usr/local/mysql
#【UBuntu 系统】如果要想在系统中使用 MySQL数据库,需要创建一个名称为 mysql 的用户组。
groupadd mysql
#【UBuntu 系统】在“mysql”用户组里面创建“mysql”用户。
useradd -r -g mysql -s /bin/false mysql
#【UBuntu 系统】设置 mysql用户组下的 mysql 用户对目录的所有权:
chown -R mysql:mysql ./
#【UBuntu 系统】MySQL里面是需要提供有数据目录的,而这个数据目录建议放在“/mnt”(数据盘)
mkdir -p /mnt/data/mysql/{db,logs}
#【UBuntu 系统】查看 MySQL数据目录结构
tree /mnt/data/mysql
#10、【UBuntu 系统】对 MySQL的数据目录进行授权
chmod -R 777 /mnt/data/mysql/
#10、my.cnf配置文件
vim /etc/my.cnf
#12、【UBuntu 系统】进行 MySQL数据库的安装
/usr/local/mysql/bin/mysqld --user=mysql --initialize --console

[Server] A temporary password is generated for root@localhost: U=-;u6stZ%.h
[Warning] [MY-013360] [Server] Plugin mysql_native_password reported: ''mysql_native_password' is deprecated and will be removed in a future release. Please use caching_sha2_password instead'
#13、【UBuntu 系统】考虑到后续的处理方便,执行几条基本命令
#MySQL 授权:
chmod -R 777 /usr/local/mysql/
#创建日志文件:
echo "">/mnt/data/mysql/logs/mysql.log
#创建进程标记:
echo "">/mnt/data/mysql/mysql.pid
#日志文件授权:
chown -R mysql:mysql /mnt/data/mysql/logs/mysql.log
#14、【UBuntu 系统】以后台服务的方式,启动 MySQL服务进程:
/usr/local/mysql/bin/mysqld_safe --user=root > /dev/null 2>&1 &

119003

#15、【UBuntu 系统】查看当前的 MySQL 进程端口占用情况:
netstat -nptl
#16、【UBuntu 系统】在防火墙中配置 3306 访问规则:
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload

#17、【UBuntu 系统】为了后续的访问方便,将密码进行修改,首先使用 MySQL客户端进行服务登录:
/usr/local/mysql/bin/mysql -uroot -p'U=-;u6stZ%.h'


....
#18、【MySQL客户端】此时的 root 账户密码不是自己的,所以需要修改为“root”
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';
程序执行结果:
Query OK,0 rows affected (0.01 sec)
#19、【MySQL客户端】此时的 root 账户只能够在本地登录,无法在远程登录,所以需要做一个权限的配置。
#切换数据库:
USE mysql;
#设置远程访问:
UPDATE user SET user.host='%' WHERE user.User='root';
#配置立即生效:
FLUSH PRIVILEGES;
........


#21、【UBuntu 系统】为了保证数据的安全性,可以为 MySQL的数据目录进行加密处理:
/usr/local/mysql/bin/mysql_ssl_rsa_setup --datadir=/mnt/data/mysql/db;
#22、【UBuntu 系统】此时的 MySQL 已经配置成功了,但是这样的服务启动过于繁琐了,所以可以考虑将其加入到系统服务之中幸运的是,
#MySQL内部提供了这样的配置支持,直接做出拷贝即可。
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
#22、【UBuntu 系统】打开 mysqld 系统服务配置文件:
vim /etc/init.d/mysqld

...

.start
$bindir/mysqld_safe --user=root --datadir="$datadir" --pid-file="$mysqld_pid_file_path" $other_args >/dev/null &
...
#23、【UBuntu 系统】重新加载系统的控制单元:
systemctl daemon-reload

#服务启动
service mysqld start
#服务停止
service mysqld stop
#服务重启
service mysqld restart
#服务状态
service mysqld status
[mysqld]
# 设置3306端口
port=3306
# 设置mysql的安装目录
basedir=/usr/local/mysql
# 设置mmysql数据库的数据的存放目录
datadir=/mnt/data/mysql/db
# 设置进程编号文件保存路径
pid-file=/mnt/data/mysql/mysql.pid
# mysqlsock存储目录
socket=/mnt/data/mysql/db/mysql.sock
# 允许最大连接数
max_connections=10000
# 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统
max_connect_errors=10
# 服务端使用的字符集默认为UTF8
character-set-server=UTF8MB4
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 默认使用"mysql_native_password"播件认证
authentication_policy=mysql_native_password
# 设置MySQL数据库时区
default-time_zone ='+8:00'
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
# mysqlsock存储目录
socket=/mnt/data/mysql/db/mysql.sock
[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3306
default-character-set=utf8
[mysqld_safe]
log-error=/mnt/data/mysql/logs/mysql.log
pid-file=/mnt/data/mysql/mysql.pid
# mysqlsock存储目录
socket=/mnt/data/mysql/db/mysql.sock

mysql 安全

mysql 创建新用户并给授权指定的数据库权限

mysql -uroot -proot;

#低版本数据库
create user '用户民'@'%' identified by '密码';
#高版本数据库
create user 'mysqlYix'@'%' identified with mysql_native_password by 'root';
#修改密码:
alter user '用户名'@'%' identified by '密码';
#这个时候访问,是除了默认生成information_schema和test数据库,看不到任何其它的数据库信息

#给该用户添加权限
#all 可以替换为 select,delete,update,create,drop
#指定数据库
grant all privileges on 想授权的数据库.* to '用户名'@'%';
#全部数据库
grant all privileges on *.* to 'mysqlYix'@'%';
#删除用户
delete from mysql.user where user='mysqlYix';

远程授权

# 先进入mysql
mysql -u root -p
# 授权(root用户)远程连接权限(不建议)
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '远程登录密码' WITH GRANT OPTION;
FLUSH PRIVILEGES;
# 使用单独的远程登录用户(推荐)
GRANT ALL PRIVILEGES ON *.* TO 'mysql_yix'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
FLUSH PRIVILEGES;

USE mysql;
#设置远程访问:
UPDATE user SET user.host='%' WHERE user.User='mysqlYix';
UPDATE user SET user.host='localhost' WHERE user.User='root';
#配置立即生效:
FLUSH PRIVILEGES;

mysql8新特性

caching_sha2_password

#默认禁用mysql_native_password
#开启需要配置文件配置 my.cnf 不建议开启
mysql_native_password=on

上次编辑于: