mysql下载地址: https://dev.mysql.com/downloads/mysql/
下载了mysql之后
解压tar -xvf mysql-8.0.32-linux-glibc2.12-x86_64.tar.xz
然后移动重命名到mv mysql-8.0.32-linux-glibc2.12-x86_64 /usr/local/mysql
/usr/local/基本就是mysql的归宿
创建mysql用户组和用户并修改权限
groupadd mysql
useradd -r -g mysql mysql
创建数据目录并赋予权限
mkdir -p /data/mysql #创建目录,一般都是根目录下
chown mysql:mysql -R /data/mysql #赋予权限
配置my.cnf
vim /etc/my.cnf
[mysqld]
bind-address=0.0.0.0
port=3306
user=mysql
basedir=/usr/local/mysql
datadir=/data/mysql
socket=/tmp/mysql.sock
log-error=/data/mysql/mysql.err
pid-file=/data/mysql/mysql.pid
#character config
character_set_server=utf8mb4
symbolic-links=0
explicit_defaults_for_timestamp=true
注意,如果你想开启binlog,请在初始化数据库之后操作。或者在一切结束后操作,我会将其配置放到最后
然后开始初始化数据库
进入bin
cd /usr/local/mysql/bin/
初始化
./mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql/ --datadir=/data/mysql/ --user=mysql --initialize
查看初始密码
cat /data/mysql/mysql.err
启动mysql,并更改root 密码
先将mysql.server放置到/etc/init.d/mysql中,不过在此之前要先编辑下mysql.server这文件,一些配置要改正
vim ./support-files/mysql.server
一下绿色标记的地方都根据自己的配置写
然后放置
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
启动service mysql start
如果启动遇到了Failed to start mysql.service: Unit mysql.service is masked
执行systemctl unmask mysql.service
然后去修改密码
在bin目录下,使用初始密码登陆进去
./mysql -u root -p #bin目录下
但是执行此命令会发现https://blog.csdn.net/wss794/article/details/124415233
apt-get install libtinfo5
,如果这个不行就apt-get install libncurses*
然后重新进入修改密码
ALTER USER '用户'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';
然后给mysql加上软链接,就不需要每次都到/usr/local/mysql/bin下执行命令
ln -s /usr/local/mysql/bin/mysql /usr/bin
首先创建个目录用于存放log文件
mkdir mysql-binlog
然后修改此目录的所有者和所属组
chown -R mysql:mysql mysql-binlog
注意不能放到/data/mysql目录下,因为前面已经将该目录作为datadir,如果再创建一个文件夹,数据库链接的时候就会有一个奇奇怪怪的数据库出现,但也不影响正常使用
向/etc/my.cnf追加文件
# bin-log的开启
#设置日志三种格式:STATEMENT、ROW、MIXED 。
binlog_format = mixed
#设置日志路径,注意路经需要mysql用户有权限写,这里可以写绝对路径,也可以直接写mysql-bin(后者默认就是在/var/lib/mysql目录下)
log-bin = /data/mysql-binlog/mysql-bin.log
#设置binlog清理时间
expire_logs_days = 7
#binlog每个日志文件大小
max_binlog_size = 100m
#binlog缓存大小
binlog_cache_size = 4m
#最大binlog缓存大小
max_binlog_cache_size = 512m
#配置serverid
server-id=1
置完成后,保存,重新运行service mysql restart
有的也可能是service mysqld restart
看你前面怎么定义的,就会在目标文件夹下生成对应的.index文件和模块文件
查询用户:
USE mysql;
SELECT * FROM user;
创建用户:
CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码';
修改用户密码:
ALTER USER '用户名'@'主机名' IDENTIFIED WITH mysql_native_password BY '新密码';
或
UPDATE user SET Password=PASSWORD('root') WHERE user='root';
删除用户:
DROP USER '用户名'@'主机名';
开启远程访问权限:
update user set host ='%' where user ='root';//开启远程访问user
flush privileges;//刷新权限
示例
-- 创建用户test,只能在当前主机localhost访问
create user 'test'@'localhost' identified by '123456';
-- 创建用户test,能在任意主机访问
create user 'test'@'%' identified by '123456';
create user 'test' identified by '123456';
-- 修改密码
alter user 'test'@'localhost' identified with mysql_native_password by '1234';
-- 删除用户
drop user 'test'@'localhost';
注意
● 主机名可以使用 % 通配
● 这类sql开发人员操作的比较少,主要是DBA(Database Administrator 数据库管理员)使用
SHOW GRANTS FOR '用户名'@'主机名';
授予权限:
GRANT 权限列表 ON 数据库名.表名 TO '用户名'@'主机名';
撤销权限:
REVOKE 权限列表 ON 数据库名.表名 FROM '用户名'@'主机名';
示例
-- 授予所有表所有权限
GRANT all on [数据库名].* to '用户名'@'主机名';
GRANT all on KFC.* to 'Akio'@'%';
GRANT all on *.* to 'Akio'@'%';
注意事项
● 多个权限用逗号分隔
● 授权时,数据库名和表名可以用 * 进行通配,代表所有