Mysql单机部署
参考资料
- 官网地址:https://www.mysql.com/
- https://dev.mysql.com/
- 下载地址:https://www.mysql.com/downloads/
- https://dev.mysql.com/downloads/mysql/
- 文档地址:
一、windows安装mysql
问题记录:
1.装 微软常用运行库合集_2019.07.20_X64.exe //网上搜、网盘已上传
2.忘改临时密码,且临时密码失效:通过命令行修改
mysql -u root -p
alter user user() identified by "root";
二、Linux安装mysql
1.检查卸载旧版本
## 检查系统版本: (64位还是32位)
cat /etc/system-release
uname -a
## 检查是否安装mysql
rpm -qa mysql* //rpm 检查
yum list mysql* //yum 检查
## 卸载mysql(如果没安装mysql直接跳过此步骤)
yum remove mysql* //yum 卸载
rpm -e mysql* //rpm 卸载
备注:这个只能适用于用yum安装的mysql,如果是用安装包安装的直接将安装包删除。
2.离线包安装不依赖外网
## 官网下载安装包、解压:
https://dev.mysql.com/downloads/mysql/
1.将下载好的mysql-8.0.17-linux-glibc2.12-x86_64.tar.xz上传到usr/local/mysql目录下(如果没有该目录可以依次建文件夹)
2. .tar.xz解压是 tar -xvf mysql-8.0.17-linux-glibc2.12-x86_64.tar.xz
.tar.gz解压是 tar -zvxf mysql-8.0.17-linux-glibc2.12-x86_64.tar.xz
## mysql安装
1.重命名解压文件:进入mysql文件夹执行命令:mv mysql-8.0.17-linux-glibc2.12-x86_64 mysql
移动重命名后文件内的所有文件:进入重名名的mysql文件夹执行命令:mv * usr/local/mysql
将刚刚空了的mysql文件夹删除;最后的结果mysql可执行文件bin的全路径应该是usr/local/mysql/bin
2.为系统添加mysql 组和用户:
groupadd mysql
useradd -r -g mysql mysql
3.进入 /usr/local/mysql 目录下, 修改当前目录为mysql用户
修改相关权限:chown -R mysql:mysql ./
4.如果你/etc下没有my.cnf文件, 新建一个/etc/my.cnf
## 新建一个文件
touch /etc/my.cnf
## 赋予权限
chmod 755 my.cnf
5.my.cnf 的信息如下
[mysqld]
#设置表名大小写不敏感
lower_case_table_names=1
# 连接超时wait_timeout设置
wait_timeout=1800
interactive_timeout=1800
#设置mysql安装目录
basedir=/usr/local/mysql
#设置mysql数据库的数据存放目录
datadir=/usr/local/mysql/data
port=3306
socket=/tmp/mysql.sock
#设置mysql的日志文件位置(这个配置文件先不要放开,不然会报找不到Mysql.log文件,等启动后再放开,在重启)
#log-error=/var/log/mysql.log
#注意了,小细节,这里的 $hostname 是linux的主机名。一般每个人主机名都是不一样的。
pid-file=/usr/local/mysql/data/$hostname.pid
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
6.mysql初始化操作,记录下临时密码,之后第一次登录的时候会用到。
bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
//运行完成会生成一个暂时的密码
7.为mysql配置环境变量。 vim /etc/profile // 打开profile文件在最后追加下面命令
export MYSQL_HOME
MYSQL_HOME=/usr/local/mysql
export PATH=$PATH:$MYSQL_HOME/lib:$MYSQL_HOME/bin
退出后让其立马生效命令:source /etc/profile
8.设置为开机自启动项,依次执行下面代码
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
chmod +x /etc/init.d/mysql //添加可执行权限。
chkconfig --add mysql // 注册启动服务
输入chkconfig --list //查看是否添加成功。
9.启动msyql,并登陆
service mysql start //开启服务器。
注意:如果启动报了pid找不到的错误,直接把my.cnf中pid-file=/usr/local/mysql/data/$hostname.pid删掉,在启动就可以了
mysql -uroot -p //登录进入mysql,然后提示输入密码。
10.输入初始化过程中生成的临时密码,然后回车就行。进入一下页面。
11.进入mysql后,修改密码。不然你什么也做不了。
alter user 'root'@'localhost' identified by 'your_password';
其中'your_password'是你设置的新密码
11.创建远程操作账户,进行远程访问的授权,并更新权限,依次执行以下代码:
create user 'root'@'%' identified with mysql_native_password by '123456';
grant all privileges on *.* to 'root'@'%' with grant option;
flush privileges;
备注:如果创建远程账号的密码错了,修改方法点击这里https://blog.csdn.net/qq_36631900/article/details/103404515
12.本地用telnet连接测试下能否连接,命令是:telnet 你安装数据库的服务器ip 3306
如果直接进入全黑界面,这就代表远程访问成功,或者你也可以用navicat连接尝试
三、常用命令操作
- 登录: mysql -uroot -p
- 查看库:show databases;
- 切换库: use test_db;
- 查看表:show tables;
- 查看表DDL:desc t_student;
- 查看版本信息
- 1 在命令行登录mysql,即可看到mysql的版本号
- 2.在命令行使用status查看
- 3.mysql> select version();
- grant 用户授权
mysql> grant all privileges on testdb.* to 'userA'@'%' identified by '123456' with grant option;
- 预查看执行计划:mysql-v8.0以上支持树状结果查看
EXPLAIN FORMAT=tree
SELECT name from t_student where sex = 'man' and score > 95 ORDER BY score desc;
- 查看执行计划:
EXPLAIN ANALYZE
SELECT name from t_student where sex = 'man' and score > 95 ORDER BY score desc;
- 账号、授权、删除…
# 创建账号
CREATE USER 'readUser'@'%' IDENTIFIED BY '123456';
use mysql;
#授权库
GRANT SELECT ON apolloconfigdb.* TO 'readUser'@'%';
GRANT Select ON `xx-web`.* TO 'readUser'@'%'; //带-的需要引号
#GRANT SELECT ON `xx-web`.* TO 'readUser'@'%' WITH GRANT OPTION;
#GRANT SELECT ON `xx-web`.* TO 'readUser'@'%' IDENTIFIED BY '123456';
flush privileges;
#查询权限
SHOW GRANTS FOR readUser;
#查询用户表
SELECT user,host FROM mysql.user;
#删除所有授权
REVOKE all privileges ON *.* FROM 'readUser'@'%';
EVOKE Select ON apolloconfigdb.* FROM 'readUser'@'%';
#重置密码
set password for 'readUser'@'%' = password('123');
#删除账号
DROP USER 'readUser'@'%'
- 统计库、表、大小、记录数
-- 查询所有库大小
SELECT table_schema 'DB',sum( data_length + index_length ) / 1024 / 1024 as 'DBSize (MB)'
FROM information_schema.TABLES
GROUP BY table_schema ;
-- 查询指定库 所有表大小
SELECT table_schema as 'DB', table_name AS 'Table',
ROUND(((data_length + index_length) / 1024 / 1024), 2) AS 'Size (MB)'
FROM information_schema.TABLES
WHERE table_schema like 'demo-%';
-- 查询指定库 所有表记录数
SELECT table_schema as 'DB', table_name AS 'Table', table_rows
FROM information_schema.TABLES
WHERE table_schema like 'demo-%';
-- 查询information_schema: 所有表,tables表、字段表
use information_schema;
show tables;
select * FROM information_schema.TABLES;
select * FROM information_schema.columns;
四、mysql常见问题汇总
1.数据库链接数太多:too many connection,修改链接超时时间
show processlist;
show global variables like '%timeout%';
show session variables like '%timeout%';
show global variables like 'wait_timeout';
set global wait_timeout=1800;
set global interactive_timeout=1800;
set session wait_timeout=600;
set session interactive_timeout=600;
2.大小写敏感,修改my.cnf 的信息如下
[mysqld]
#设置表名大小写不敏感
lower_case_table_names=1
3.MySQL主从同步相关-主从多久的延迟
使用master_delay选项可以控制延迟,使用change master to可以设定延迟多少秒,mysql复制默认延迟是0秒
4.mysql主从不同步
# 到Slave上查看
mysql> show slave status;
Slave_IO_Running: Yes
Slave_SQL_Running: No
可见是Slave-sql不同步,查看是否有error信息
5.Last_SQL_Error: Error ‘Unknown database’ ApolloConfigDB…
大写库表同步sql执行失败,
先stop slave;
然后手动创建库;
再start slave; // 或者先收到备份恢复,直接从主库dump,到从库上执行sql
问题记录
Post Directory
扫码关注公众号:暂无公众号
发送 290992
即可立即永久解锁本站全部文章