一、下载镜像
docker pull mysql
二、安装
docker run -p 3306:3306 --privileged=true --name compose_mysql_1 -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d docker.io/mysql:latest 注:--privileged=true,使用该参数,container内的root拥有真正的root权限。否则,container内的root只是外部的一个普通用户权限。 -e MYSQL_ROOT_PASSWORD=123456初始化root用户密码
三、测试
进入容器: docker exec -it compose_mysql_1 /bin/bash mysql -uroot -h 127.0.0.1 -p
四、修改远程连接配置
进入mysql容器: ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '密码'; flush privileges;
五、创建用户和授权
创建用户: CREATE USER '用户名'@'%' IDENTIFIED BY '密码'; 注: '%' - 所有情况都能访问 ‘localhost’ - 本机才能访问 ’111.222.33.44‘ - 指定 ip 才能访问 授权: grant all privileges on 库名称.* to '用户名'@'%'; 注: all 可以为 select,delete,update,create,drop 修改远程连接: ALTER USER '用户名'@'%' IDENTIFIED WITH mysql_native_password BY '密码'; flush privileges; 完成。 删除用户: Delete FROM mysql.user Where User='用户名';
六、修改用户密码
在docker修改密码,使用: update user set password=password('新密码') where User='用户名' and host='127.0.0.1'; 并不行,会报错。 使用以下命令修改即可: ALTER USER '用户名'@'%' IDENTIFIED WITH mysql_native_password BY '密码'; flush privileges;
七、java测试连接
import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.Statement;public class Test { public static void main(String args[]) { try { Class.forName("com.mysql.jdbc.Driver"); Connection connect = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/user","root","xxxxx"); Statement stmt = connect.createStatement(); ResultSet rs = stmt.executeQuery("select * from user"); while (rs.next()){ System.out.println(rs.getString("name")); } }catch (Exception e) { e.printStackTrace(); } }}