寻找Liunx版Mysql,版本看自己定,本文章适合绝大版本观看,本人运用8.0.11版本mysql。
命令:find / -name mysql进入该文件夹彻底删除!
安装第三方依赖包:tar xvf mysql-80.11-1.el7.86_64.rpm-bundle.tar
yum install perl -yyum install net-tools -y
查看
mariadbrpm -qa|grep mariadb
结果显示:
mariadb-libs-5.5.60-1.el7_5.x86_64
卸载:
rpm -e mariadb-libs-5.5.60-1.el7_5.x86_64 --nodeps
MySQLrpm -ivh
mysql-community-common-8.0.11-1.el7.x86_64.rpmrpm -ivh
mysql-community-libs-8.0.11-1.el7.x86_64.rpmrpm -ivh
mysql-community-client-8.0.11-1.el7.x86_64.rpmrpm -ivh
mysql-community-server-8.0.11-1.el7.x86_64.rpm
sudo rpm -ivh mysql-community-common-8.0.11-1.el7.x86_64.rpm
sudo rpm -ivh mysql-community-libs-8.0.11-1.el7.x86_64.rpm --(依赖于common)
sudo rpm -ivh mysql-community-client-8.0.11-1.el7.x86_64.rpm --(依赖于libs)
sudo rpm -ivh mysql-community-server-8.0.11-1.el7.x86_64.rpm --(依赖于client、common)
修改/var/lib/mysql目录访问权限
chmod -R 777 /var/lib/mysql/
初始化:mysqld --initializechmod -R 777 /var/lib/mysql/*
启动数据库(在线安装mysql本地安装mysqld,我在线安装初始化后访问权限用的mysqld)
service mysql / mysqld start
查看密码:grep 'temporary password' /var/log/mysqld.log
本地登录(刚安装是没有远程访问权限的)
mysql-u root -p"查看的初始密码,时间最新的一个"
修改密码
alter user user() identified by "123456";
设置MySQL允许远程连接
use mysql;update user set host ='%' where user ='root';flush privileges;
退出mysql编辑 exit
vi /etc/my.cnf
在[mysqld]后添加
character_set_server = utf8bind-address=0.0.0.0
重启MySQL(同上)
service mysql / mysqld restart
系统防火墙开放3306端口设置:firewall-cmd --zone=public --add-port=3306/tcp --permanent
应用
firewall-cmd --reload
远程连接要用最新版本的Navicat
(mysql8 之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password)
如果不想安装最新的Navicat可以修改MySQL8.0的加密规则:
登录设置:
mysql-u root -p"password" ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'password'
刷新配置,重启(同上)
MySQLflush privileges;service mysql / mysqld restart
解决方案
该问题的解决方案是
mysql没有自己权限,设置配置权限 /var/lib/mysql 所有文件权限 改成mysql.mysql
如果还不行参考以下方案
摘要:
解决不能通过mysql .sock连接MySQL问题 这个问题主要提示是,
不能通过 ‘/tmp/mysql .sock’连到服务器,
而php标准配置正是用过’/tmp/mysql .sock’,
但是一些mysql 安装方法 将 mysql .sock放在/var/lib/mysql .sock或者其他的什么地方,
你可以通过修改/etc/my.cnf文件来修正它,打开文件,可以看到如下的东东:
[mysql d]
socket=/var/lib/mysql .sock
改一下就好了,但也会引起其他的问题,如mysql 程序连不上了,再加一点:
[mysql ]
socket=/tmp/mysql .sock
或者还可以通过修改php.ini中的配置来使php用其他的mysql .sock来连,
这个大家自己去找找
或者用这样的方法:
ln -s /var/lib/mysql /mysql .sock /tmp/mysql .sock
成功了,就是这样
ln -s /var/lib/mysql /mysql .sock /tmp/mysql .sock
错误问题来源原因mysql自己生成密码规则自己不认可,我也没啥办法!
思路:不让登录就跳过呗
find /-name my.cnf
这个文件里面配置一个在[mysqld]下添加
skip-grant-tables 如图,
保存文件 重启 mysql service mysqld restart
查询这个my.cnf 时 我遇到两个问题
1:首先我查到了两个文件,正常是一个的,然后排查出哪个是自己的包下的 哪个不是
2:进入之后 这个文件内容为空,我就在网上随便找了一些内容粘贴进去的,然后配上完美运行
update user `set password=password(“新密码”) where user=”用户名”
以上是我当时用的命令 是报错的 原因是mysql5版本之后加入了加密系统,
没法去识别password这个字段所以是无法修改, 建议在网上找一下对应版本号的修改密码命令
错误描述:
mysql> grant all on cactidb.* to dbuser@'localhost' identified by '123';
ERROR 1290 (HY000):
The MySQL server is running with the --skip-grant-tables
option so it cannot execute this statement
解决方法:
先刷新一下权限表。
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)
mysql> grant all on cactidb.* to dbuser@'localhost' identified by '123';
Query OK, 0 rows affected (0.00 sec)
先登录mysqlmysql -u root -p
输入密码
mysql> use mysql;
mysql> select user,host from user;
+------------------+-----------+
| user | host |
+------------------+-----------+
| root | % |
| admin | localhost |
| mysql.infoschema | localhost |
| mysql.session | localhost |
| mysql.sys | localhost |
| zhangj | localhost |
+------------------+-----------+
注意root,host是’%’
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
改成:
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
注意权限表中host
\1.登录
MySQLmysql -u root -p
\ 2.添加新用户(允许所有ip访问)
create user 'test'@'%' identified by '123456';
#test:用户名,%:所有ip地址,123456:密码
\3.创建数据库
CREATE DATABASE test_db DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_general_ci;
\4.为新用户分配权限
grant all privileges on `test_db`.* to 'test'@'%' identified by '123456';
#授权给用户test,数据库test_db相关的所有权限,
并且该用户test在所有网络IP上都有权限,%是指没有网络限制
GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP ON TUTORIALS.* TO 'zara'@'localhost' IDENTIFIED BY 'zara123';
#分配特定的权限
\5.刷新权限
flush privileges;
\6. 修改用户的IP访问权限
use mysql;update user set host = '%' where user ='test';
\7. 授予管理员权限
grant all privileges on *.* to 'dba'@'1.2.3.4' IDENTIFIED BY 'mypassword' with grant option;
授予用户dba访问所有库和表的权限,. 第一个是所有的库,第二个是所有的表
1.2.3.4是可以访问的IP地址,
with grant option是指允许用户dba,传递其拥有的权限给其他的用户
\8. 授予只读权限
grant select on *.* to 'select_only_user'@'%' IDENTIFIED BY 'your_password';
授予用户select_only_user 所有库和表的select 权限
\9. 收回权限
revoke insert on *.* from 'someone'@'%';
收回用户someone的所有库和表的插入权限revoke跟grant语法差不多,只需要把关键字 “to” 换成 “from” 即可,并且revoke语句中不需要跟密码设置。
注意:revoke可以回收所有权限,也可以回收部分权限。
\10. 要废掉已经拥有的with grant option权限
revoke grant option on *.* from somebody;
\11. 授予很多的权限
grant insert,select,update on test_db.test_tbl to someone@'localhost' identified by '123456';
grant 权限列表 on 数据库名.数据表名 to ‘用户名’@‘主机’ identified by ‘密码’ with grant option; 授予someone用户insert,select, update等权限
\12. 查看某个用户的权限
show grants for 用户名@主机;
\13. 删除用户
drop user '用户名'@'主机';
\14. 刷新权限
flush privileges;