To solve this problem, we need to define the decision variables and the objective function. Let's denote the number of pizza mixes used as `x` and the number of mac and cheese mixes used as `y`. The objective is to minimize the total cost, which can be represented as `3x + 3.25y`.

The constraints are based on the minimum requirements of mozzarella, cheddar, and salt in the final product. For mozzarella, the constraint is `4x + y >= 30`, for cheddar it's `2x + 5y >= 25`, and for salt it's `x + 2y >= 5`. Additionally, `x` and `y` must be non-negative since they represent quantities of mixes.

Here is the Gurobi code to solve this linear programming problem:

```python
from gurobipy import *

# Create a new model
model = Model("Cheese_Mix")

# Define the decision variables
x = model.addVar(lb=0, name="pizza_mix")
y = model.addVar(lb=0, name="mac_and_cheese_mix")

# Define the objective function
model.setObjective(3*x + 3.25*y, GRB.MINIMIZE)

# Define the constraints
model.addConstr(4*x + y >= 30, "mozzarella_constraint")
model.addConstr(2*x + 5*y >= 25, "cheddar_constraint")
model.addConstr(x + 2*y >= 5, "salt_constraint")

# Optimize the model
model.optimize()

# Print the solution
if model.status == GRB.OPTIMAL:
    print("Optimal solution found:")
    print(f"Number of pizza mixes: {x.x}")
    print(f"Number of mac and cheese mixes: {y.x}")
    print(f"Total cost: {model.objVal}")
else:
    print("No optimal solution found")
```